SelectedItem和SelectedValue返回错误的项
本文关键字:错误 返回 SelectedValue SelectedItem | 更新日期: 2023-09-27 18:21:05
我有4个值的List<string> MyList
。这些显示在ComboBox
控件中。绑定在我的MVVM WPF项目中非常有效。
我还有一个string SelectedMyList
,它绑定到我的XAML,并且应该显示所选的项。我遇到的问题是,无论使用SelectedItem
还是SelectedValue
,它总是通过MyList 中的第一个项目
private MyClass()//constructor
{
MyList = new List<string>() {"Hi", "Bye", "Hello", "See ya"};
}
private string _selectedMyList;
public string SelectedMyList
{
get
{
return this._selectedMyList;
}
set
{
//value is always Hi
if (this._selectedMyList== value)
return;
this._selectedMyList= value;
OnPropertyChanged("SelectedMyList");
}
}
private List<string> _myList;
public List<string> MyList
{
get
{
return this._myList;
}
set
{
if (this._myList== value)
return;
this._myList= value;
OnPropertyChanged("MyList");
}
}
还有我的XAML
<ComboBox ItemsSource="{Binding MyList}" SelectedValue="{Binding SelectedMyList, UpdateSourceTrigger=PropertyChanged}" />
输出窗口中没有错误/绑定错误等。
为什么SelectedItem/SelectedValue没有通过我认为是ComboBox
中的选定项目?
这对我有用。
private string _selectedMyList;
public string SelectedMyList
{
get
{
return this._selectedMyList;
}
set
{
//value is always Hi
if (this._selectedMyList != value)
{
this._selectedMyList= value;
OnPropertyChanged("SelectedMyList");
}
}
}
private List<ObservableCollection> _myList;
public ObservableCollection<string> MyList
{
get
{
return this._myList;
}
set
{
if (this._myList== value)
{
this._myList= value;
OnPropertyChanged("MyList");
}
}
}
Xaml:
<ComboBox ItemsSource="{Binding MyList}"
SelectedItem="{Binding SelectedMyList}"
IsSynchronizedWithCurrentItem="True"/>
如果要使用SelectedValue属性,则需要将其与SelectedValuePath属性一起使用。请参阅类似问题的链接。