C# SelectedItem和SelectedValue返回错误的项
我有一个带有4个值的C# SelectedItem和SelectedValue返回错误的项,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我有一个带有4个值的列表。它们显示在组合框控件中。该绑定在我的MVVM WPF项目中非常有效 我还有一个字符串SelectedMyList,它绑定到我的XAML并应该显示所选的项目。我遇到的问题是,无论使用SelectedItem还是SelectedValue,它总是传递MyList中的第一项 private MyClass()//constructor { MyList = new List<string>() {"Hi", "Bye", "Hello", "See ya"
列表。它们显示在组合框
控件中。该绑定在我的MVVM WPF项目中非常有效
我还有一个字符串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");
}
}
private MyClass()//构造函数
{
MyList=新列表(){“你好”、“再见”、“你好”、“再见”};
}
私有字符串\u selectedMyList;
公共字符串SelectedMyList
{
得到
{
返回此项。\u selectedMyList;
}
设置
{
//价值总是高的
if(this.\u selectedMyList==值)
返回;
这是。\ u selectedMyList=value;
OnPropertyChanged(“SelectedMyList”);
}
}
私人名单;
公共列表列表
{
得到
{
返回此。\u我的列表;
}
设置
{
if(this.\u myList==值)
返回;
这个。_myList=值;
OnPropertyChanged(“MyList”);
}
}
还有我的XAML
<ComboBox ItemsSource="{Binding MyList}" SelectedValue="{Binding SelectedMyList, UpdateSourceTrigger=PropertyChanged}" />
输出窗口中没有错误/绑定错误等
为什么选择项目/选择值不通过我认为是“代码>组合框< /代码>?< /p> < p>所选择的项目。这对我有效。
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");
}
}
}
private string\u selectedMyList;
公共字符串SelectedMyList
{
得到
{
返回此项。\u selectedMyList;
}
设置
{
//价值总是高的
if(this.\u selectedMyList!=值)
{
这是。\ u selectedMyList=value;
OnPropertyChanged(“SelectedMyList”);
}
}
}
私人名单;
公共可观测集合MyList
{
得到
{
返回此。\u我的列表;
}
设置
{
if(this.\u myList==值)
{
这个。_myList=值;
OnPropertyChanged(“MyList”);
}
}
}
Xaml:
如果要使用SelectedValue属性,则需要将其与SelectedValuePath属性一起使用 您是否在xaml或code behind上设置了DataContext
?@YuliamChandra,如果我没有设置DataContext,那么MyList将如何绑定?不知道为什么我需要同步它。。。我怀疑还有其他事情发生,但这确实解决了问题。谢谢
<ComboBox ItemsSource="{Binding MyList}"
SelectedItem="{Binding SelectedMyList}"
IsSynchronizedWithCurrentItem="True"/>