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}" .../>