C# 为什么WPF combobox itemssource converter获取整个集合而不是项?

C# 为什么WPF combobox itemssource converter获取整个集合而不是项?,c#,wpf,data-binding,C#,Wpf,Data Binding,当我调试以下实现时。Convert方法参数值具有所有值,转换自然会失败 XAML 因为转换器就是这样工作的——它允许您转换绑定中的源项,在本例中是CustomerSearchNumber。如果要转换组合框中的每个项目,则需要指定使用转换器的自定义项目模板: <ComboBox ItemsSource="{Binding CustomerSearchNumbers}"> <ComboBox.ItemTemplate> <DataTemplate>

当我调试以下实现时。Convert方法参数值具有所有值,转换自然会失败

XAML


因为转换器就是这样工作的——它允许您转换绑定中的源项,在本例中是CustomerSearchNumber。如果要转换组合框中的每个项目,则需要指定使用转换器的自定义项目模板:

<ComboBox ItemsSource="{Binding CustomerSearchNumbers}">
  <ComboBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Converter={StaticResource customernumbertostringconverter}"/>
    </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>

因为转换器就是这样工作的——它允许您转换绑定中的源项,在本例中是CustomerSearchNumber。如果要转换组合框中的每个项目,则需要指定使用转换器的自定义项目模板:

<ComboBox ItemsSource="{Binding CustomerSearchNumbers}">
  <ComboBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Converter={StaticResource customernumbertostringconverter}"/>
    </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>

谢谢我确信我以前就这样做过。嗯+1对于唯一合理的答案:因为转换器就是这样工作的:@charm请记住,您可能需要单向绑定,这取决于您的ItemSource属性Tanks!我确信我以前就这样做过。嗯+1是唯一合理的答案:因为转换器就是这样工作的:@charm请记住,根据ItemSource属性,您可能需要单向绑定
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");
        }
    }
}
<ComboBox ItemsSource="{Binding CustomerSearchNumbers}">
  <ComboBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Converter={StaticResource customernumbertostringconverter}"/>
    </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>