我有一個包含下面的類的實例的列表: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