Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SelectedItem和SelectedValue返回错误的项_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C# SelectedItem和SelectedValue返回错误的项

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"

我有一个带有4个值的
列表。它们显示在
组合框
控件中。该绑定在我的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"/>