我有一个包含下面的类的实例的列表:WPF组合框结合和的SelectedItem
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属性字符串。哪里不对?
@Hopeless你应该写这个作为答案,因为它是真的。 –
我错了,快速浏览一下XAML。看起来像'SelectedItem'是绑定错误的。它应该绑定到一个'Foo.InformationModel.Reference.ReferenceCodeTypeChar'类型的属性,在这种情况下你可以将它绑定到一个字符串属性。从'SelectedItem'到'SelectedProgramTypeCode'的方式,没有Converter,所以'ToString()'将在'SelectedItem'上被调用并解析为''Foo.InformationModel.Reference.ReferenceCodeTypeChar“',然后被设置为'SelectedProgramTypeCode '(所以你可以在'value'变量中看到它)。 – Hopeless