C# 获取组合框绑定的多列列表的SelectedItem

C# 获取组合框绑定的多列列表的SelectedItem,c#,wpf,mvvm,combobox,C#,Wpf,Mvvm,Combobox,我有一个多列列表绑定到一个组合框 它将列表列Name显示为ItemSource 问题 SelectedItem会返回名称 使用MessageBox.Show(vm.cboVideoQuality\u SelectedItem)字符串显示为MyProgram.ViewModel+VideoQuality而不是High 我试着用: vm.cboVideoQuality\u选择editem.FirstOrDefault(s=>s.Name) 但它给出的错误是“char”不包含名称的定义 XAML

我有一个多列
列表
绑定到一个
组合框

它将列表列
Name
显示为
ItemSource


问题

SelectedItem
会返回
名称

使用
MessageBox.Show(vm.cboVideoQuality\u SelectedItem)
字符串显示为
MyProgram.ViewModel+VideoQuality
而不是
High

我试着用:
vm.cboVideoQuality\u选择editem.FirstOrDefault(s=>s.Name)

但它给出的错误是“char”不包含名称的定义


XAML

绑定
项目源
所选项目

<ComboBox x:Name="cboVideoQuality" 

          ItemsSource="{Binding cboVideoQuality_Items, Mode=TwoWay}"
          DisplayMemberPath="Name"

          SelectedItem="{Binding cboVideoQuality_SelectedItem, Mode=TwoWay}"
          SelectedValuePath="Name"

          HorizontalAlignment="Left" 
          VerticalAlignment="Top" 
          Margin="0,0,0,0" 
          Width="100" />

您已经使用了
SelectedValuePath
,当然也应该使用
SelectedValue
而不是
SelectedItem

<ComboBox
      ItemsSource="{Binding cboVideoQuality_Items}"
      DisplayMemberPath="Name"
      SelectedValuePath="Name"
      SelectedValue="{Binding cboVideoQuality_SelectedItem}" .../>


需要注意的是,在这两种绑定中,
Mode=TwoWay
都是冗余的。ItemsSource绑定从来不是双向的,而SelectedValue绑定在默认情况下是双向的


我还建议不要在视图模型属性名称中使用绑定目标属性详细信息。例如,
cboVideoQuality\u SelectedItem
只应是
SelectedVideoQuality
。因此,您也可以将其绑定到列表框的SelectedValue属性,甚至是TextBlock的Text属性,而不会产生太多混淆。

您已经使用了
SelectedValuePath
,当然也应该使用
SelectedValue
而不是
SelectedItem

<ComboBox
      ItemsSource="{Binding cboVideoQuality_Items}"
      DisplayMemberPath="Name"
      SelectedValuePath="Name"
      SelectedValue="{Binding cboVideoQuality_SelectedItem}" .../>


需要注意的是,在这两种绑定中,
Mode=TwoWay
都是冗余的。ItemsSource绑定从来不是双向的,而SelectedValue绑定在默认情况下是双向的


我还建议不要在视图模型属性名称中使用绑定目标属性详细信息。例如,
cboVideoQuality\u SelectedItem
只应是
SelectedVideoQuality
。因此,您也可以将其绑定到列表框的SelectedValue属性,甚至是TextBlock的Text属性,而不会产生太多混乱。

谢谢,它现在可以工作了。我还将重命名模型属性。谢谢,它正在工作。我还将重命名模型属性。
<ComboBox
      ItemsSource="{Binding cboVideoQuality_Items}"
      DisplayMemberPath="Name"
      SelectedValuePath="Name"
      SelectedValue="{Binding cboVideoQuality_SelectedItem}" .../>