C# 绑定WPF组合框的奇怪行为

C# 绑定WPF组合框的奇怪行为,c#,wpf,binding,C#,Wpf,Binding,绑定到组合框的文本属性时遇到问题。在组合框中选择某个内容之前,它似乎不会绑定。那么它工作得很好 ListItems.Add("South"); ListItems.Add("Southwest"); 以下是直接来自测试应用程序的代码: 看法 这是怎么回事?我想你可能想做: PropertyChanged(这是新的PropertyChangedEventArgs(“列表项”) 插入元素后。文本属性的工作方式与此不同。 阅读本文件: 就像hameleon86建议的那样,使用selectedite

绑定到组合框的文本属性时遇到问题。在组合框中选择某个内容之前,它似乎不会绑定。那么它工作得很好

ListItems.Add("South");
ListItems.Add("Southwest");
以下是直接来自测试应用程序的代码:

看法


这是怎么回事?

我想你可能想做:

PropertyChanged(这是新的PropertyChangedEventArgs(“列表项”)


插入元素后。

文本属性的工作方式与此不同。 阅读本文件:

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


我认为如果你颠倒你的收藏顺序,它会起作用,可能是因为默认情况下,Text属性占据了收藏的第一项

我认为你应该使用SelectedItem属性,而不是Text它应该与之一起使用。正如我所展示的,如果你颠倒集合中字符串的顺序,它就会工作。我只是不明白为什么。就像hameleon86说的,你不应该被文本束缚。在控件(如ComboBox(或ListBox、ListView等)上绑定时,您应该只绑定到SelectedItem或SelectedValue以修改所选内容。我认为WPF ComboBox的工作方式与windows.forms ComboBox类似,它允许这种行为。奇怪的是,我以前从未见过这种情况。我有十几个这样装订的组合框,它们都很好用。我来试试。我想这就是ObservableCollection应该做的。没有变化,还有其他想法吗?我不明白为什么我需要创建一个新的集合?CeD的回答是:)@hameleon86引发此事件是为了UI端强制刷新。
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");