我有一个组合框,它绑定到像这样的数据表列:
ComboBox.DataContext = DataDataTable;
ComboBox.DisplayMemberPath = DataDataTable.Columns["IDNr"].ToString();
列中的IDNr始终以4个字母开头,后跟ID号(例如BLXF1234)。 我需要在没有字母的情况下在Combobox中显示项目(我需要在组合框中显示1234)。
所以我写了一个转换器:
class IDPrefixValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
string s = value.ToString();
if (s.Contains("BL"))
{
return s.Substring(4);
}
else
{
return s;
}
}
return "";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
不,我怎么能告诉组合框使用转换器来显示项目? 我在Xaml中试过这个:
ItemsSource="{Binding}"
DisplayMemberPath="{Binding Converter={StaticResource IDPrefixValueConverter}}"
但仍然没有工作......任何想法? 感谢
答案 0 :(得分:57)
您可以修改ItemTemplate
的{{1}}并使用您的转换器:
ComboBox
每个项目都绑定到<ComboBox ItemsSource="{Binding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource IDPrefixValueConverter}}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
中的项目。通过在绑定中使用转换器,您可以执行所需的转换。