【发布时间】:2020-12-02 22:37:52
【问题描述】:
我和这个用户的要求完全一样:MVVM Editable ComboBox Bindings。
我已经尝试了接受的答案:
“将“EditedServerName”之类的属性绑定到 Combobox.Text。当 “EditedServerName”已更改,您可以将值设置为 SelectedServer 的“ServerName”。”
但它不起作用,因为当我尝试拦截“EditedServerName”时,“SelectedServer”为空。我相信这是因为控件尝试在集合中搜索正在编辑的“ServerName”,并且显然无法检索到元素。当我开始编辑并且带有“ServerID”的文本块立即变空时,这一点非常清楚。
XAML:
<ComboBox IsEditable= "True"
ItemsSource= "{Binding Servers}"
DisplayMemberPath= "ServerName"
SelectedItem="{Binding SelectedServer}"
Text= "{Binding EditedServerName, UpdateSourceTrigger=LostFocus}" />
<TextBlock Text="{Binding SelectedServer.ServerID}"/>
视图模型:
public List<Server> Servers { get; set; }
public Server SelectedServer { get; set; }
private string editedServerName;
public string EditedServerName
{
get { return editedServerName; }
set
{
editedServerName = value;
SelectedServer.ServerName = value;
}
}
public MainViewModel()
{
Servers = new List<Server>();
Servers.Add(new Server { ServerID = 0, ServerName = "Local" });
Servers.Add(new Server { ServerID = 1, ServerName = "Remote" });
}
我知道我可以将“SelectedServer”临时存储在另一个对象上,但如果可能的话,我想要一个更好的周转。
【问题讨论】:
-
您可以粘贴您的代码以便我们更好地帮助您。
-
@Hayden 我已尽力改善问题。我希望这已经足够清楚了。
标签: c# wpf xaml mvvm .net-core-3.1