当我使用以下实现进行调试时。 Convert-method 参数值有所有值,自然转换失败。
XAML
<UserControl.Resources>
<appconv:CustomerNumberToStringConverter x:Key="customernumbertostringconverter" />
</UserControl.Resources>
<!-- ... -->
<ComboBox Grid.Row="4" Grid.Column="0" ItemsSource="{Binding CustomerSearchNumbers, Converter={StaticResource customernumbertostringconverter}}" SelectedItem="{Binding Path=SelectedCustomerSearchNumber, Mode=TwoWay}" />
View 模型
public enum CustomerIdentifier
{
ClientPointNo = 0,
ClientNo = 1,
MeterNo = 2,
CustPointNo = 3
}
public ObservableCollection<CustomerIdentifier> CustomerSearchNumbers { get; private set; }
CustomerSearchNumbers = new ObservableCollection<CustomerIdentifier>((IEnumerable<CustomerIdentifier>)Enum.GetValues(typeof(CustomerIdentifier)));
转换器
public class CustomerNumberToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
var enumValue = (CustomerIdentifier)value;
switch (enumValue)
{
case CustomerIdentifier.ClientPointNo:
return XxxUtility.GetString("strclientpointno");
case CustomerIdentifier.ClientNo:
return XxxUtility.GetString("strclientno");
case CustomerIdentifier.MeterNo:
return XxxUtility.GetString("strmeterno");
default:
return XxxUtility.GetString("strcustomerpointno");
}
}
}
请您参考如下方法:
因为这就是转换器的工作方式 - 它允许您转换绑定(bind)中的源项,在本例中为 CustomerSearchNumbers。如果要转换 ComboBox 中的每个单独项目,则需要指定使用转换器的自定义 ItemTemplate:
<ComboBox ItemsSource="{Binding CustomerSearchNumbers}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource customernumbertostringconverter}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
