绑定WPF组合框的奇怪行为

本文关键字:WPF 组合 绑定 | 更新日期: 2023-09-27 17:51:11

我绑定到一个组合框的文本属性有问题。似乎它不会绑定,直到我在组合框中选择一些东西。

下面是直接来自测试应用程序的代码:

视图

<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");

这是怎么回事?

绑定WPF组合框的奇怪行为

text属性不是这样工作的。阅读本文档:http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox.text.aspx

就像hameleon86建议的那样,使用selecteditem代替

我想如果你把集合的顺序倒过来可能会起作用因为Text属性默认是集合的第一项

我想你可能想这样做:

PropertyChanged(this, new PropertyChangedEventArgs(" listtitems "));

插入元素后