WPF组合框绑定和SelectedItem
本文关键字:SelectedItem 绑定 组合 WPF | 更新日期: 2023-09-27 18:16:28
我有一个包含以下类实例的列表:
namespace Foo.InformationModel.Reference
{
public class ReferenceCodeTypeChar
{
public ReferenceCodeTypeChar();
public string Category { get; set; }
public string CodeValue { get; set; }
public string Description { get; set; }
public string Value { get; set; }
}
}
下面是用于组合框所在窗口及其相关属性的DataContext
的对象:
public class MyObject
{
public List<Foo.InformationModel.Reference.ReferenceCodeTypeChar> ProgramTypes() {...}
private string _selectedProgramTypeCode;
public string SelectedProgramTypeCode
{
get
{
return _selectedProgramTypeCode;
}
set
{
if (_selectedProgramTypeCode != value)
{
_selectedProgramTypeCode = value;
OnPropertyChanged("SelectedProgramTypeCode");
}
}
}
}
下面是这个组合框的xaml代码:
<ComboBox ItemsSource="{Binding Path=ProgramTypes}"
SelectedItem="{Binding Path=SelectedProgramTypeCode, Mode=TwoWay}"
DisplayMemberPath="Description"
SelectedValuePath="Value"/>
问题发生在SelectedProgramTypeCode内部。"value"变量的值是Foo.InformationModel.Reference.ReferenceCodeTypeChar,而不是ReferenceCodeTypeChar对象的value属性的预期字符串。怎么了?
您必须将SelectedItem
或 SelectedValuePath
与SelectedValue
结合使用。
查看答案SelectedItem, SelectedValue和SelectedValuePath之间的差异
您应该在XAML中使用SelectedValue
而不是SelectedItem
。
<ComboBox
ItemsSource="{Binding Path=ProgramTypes}"
SelectedValue="{Binding Path=SelectedProgramTypeCode, Mode=TwoWay}"
DisplayMemberPath="Description"
SelectedValuePath="Value" />