在這種情況下,您最好使用DataTemplate
而不是Converter
。
您已擁有數據類。只需使用DataTemplate
插入綁定到int值的Textblock
,然後在那裏應用您的轉換器。
<ComboBox>
<ComboBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:TaxDataSet.SourcesOfValuesRow}">
<TextBlock Text="{Binding FamilyStatus, Converter={StaticResource FamilyStatusStringConverter}}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
<ComboBox>
將您的SourcesOfValuesRow FamilyStatusProperty更改爲枚舉。從int派生讓你直接施放它。
enum FamilyStatusValues : int
{
[Description("Married")]
Married,
[Description("Divorced")]
Divorced,
[Description("Living Together")]
LivingTogether
}
然後在你的轉換器使用此代碼
ConvertTo(object value, ...)
{
FieldInfo field = value.GetType().GetField(value.ToString());
object[] attribs = field.GetCustomAttributes(typeof(DescriptionAttribute), true));
if(attribs.Length > 0)
{
return ((DescriptionAttribute)attribs[0]).Description;
}
return string.Empty;
}
您使用「EnumerableRowCollection」而不是「字典」的任何特定原因?我知道如果你使用'Dictionary ',你可以使用'SelectedValuePath =「Key綁定」DisplayMemberPath =「Value」' –
2013-04-04 19:32:26