我有一个下拉框,它绑定到一个 DataTable 的列,代码如下:
ComboBox.DataContext = DataDataTable;
ComboBox.DisplayMemberPath = DataDataTable.Columns["IDNr"].ToString();
列中的IDNr始终以4个字母开头,后跟ID号码(例如BLXF1234)。 我需要在组合框中显示没有字母的项目(我需要在组合框中显示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}}"
但仍然无法运行...有什么想法吗? 谢谢
DisplayMemberPath
是一个指向要显示的属性路径,而不是绑定。如果在此应用转换器,则不会实现任何效果。 - H.B.