【发布时间】:2012-12-25 00:36:13
【问题描述】:
我无法绑定到组合框的文本属性。在我在组合框中选择某些内容之前,它似乎不会绑定。然后就可以正常使用了。
这是直接来自测试应用的代码:
查看
<ComboBox ItemsSource="{Binding ListItems}"
Text="{Binding Test}" />
视图模型
class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<string> ListItems { get; set; }
public ViewModel()
{
ListItems = new ObservableCollection<string>();
ListItems.Add("Southwest");
ListItems.Add("South");
}
public string Test
{
get { return "South"; }
set { PropertyChanged(this, new PropertyChangedEventArgs("Test")); }
}
}
但是,当我颠倒可观察集合项的顺序时,一切正常。
ListItems.Add("South");
ListItems.Add("Southwest");
这是怎么回事?
【问题讨论】:
-
我认为你应该使用 SelectedItem 属性而不是 Text
-
它应该可以与任何一个一起使用。就像我展示的那样,如果你颠倒集合中字符串的顺序,它就可以工作。我只是不明白为什么。
-
就像 hameleon86 所说,您不应该绑定到 Text。在像 ComboBox(或 ListBox、ListView 等)这样的控件上绑定时,您应该只绑定到 SelectedItem 或 SelectedValue 以修改所选内容。
-
我的立场是正确的,我认为 WPF 组合框像 windows.forms 组合框一样工作,它允许这种类型的行为。 msdn.microsoft.com/en-us/library/… 。奇怪的是我以前从未见过这种情况。我有十几个像这样绑定的组合框,它们都可以正常工作。