【问题标题】:IValueConverter for collection用于集合的 IValueConverter
【发布时间】:2012-09-03 17:54:09
【问题描述】:

在我的 Silverlight 应用程序中,我有 ComboBoxes,而不是绑定到 int 或 double 类型的集合。这些集合包含用户可以选择的可能的有效值。我还需要在组合框中有一个“自动”选项。在我的代码中,我将“自动”表示为 -1。因此,我试图找到一种方法,可以获取整数集合(集合可能包含 -1)并将 ComboBox 绑定到它,并使用 IValueConverter 使 -1 显示为“自动”。我尝试在 ItemsSource 的 Binding 中设置 Converter,但无法使用格式化选项创建新集合。

【问题讨论】:

    标签: c# silverlight data-binding combobox ivalueconverter


    【解决方案1】:

    我决定在发布此问题之前再尝试一次搜索,最后找到了我的答案。这种情况下的关键是不要使用 IValueConverter 作为 ItemsSource 绑定的转换器,而是设置一个 ItemTemplate(我在样式中使用它):

    <Style TargetType="ComboBox" x:Key="AutoComboBox">
        <Setter Property="ItemTemplate">
            <DataTemplate>
                <TextBlock Text="{Binding Converter={StaticResource autoConverter}}" />
            </DataTemplate>
        </Setter>
    </Style>
    

    autoConverter 只是 IValueConverter 的一个简单实现,它检查值是否为 -1,如果是,则返回“Auto”。 ConvertBack 反之亦然。

    【讨论】:

      【解决方案2】:

      您好,下面的示例可能对您有所帮助....

      将转换器绑定到控件:-


      Header="返回状态" Width="110"/>


      转换方法:-

      public object Convert(object value, Type targetType, object parameter,System.Globalization.CultureInfoculture)

          {
              string Text = "";            
      
              if (value != null)
              {                
                  if(value == -1)
                  {
                        Text = "Auto";
                  }
                  else
                  {
      
                  }
              }
              return Text;
          }
      

      【讨论】:

      • 谢谢,但这并不能解决我的问题。我需要一个组合框。我实际上已经解决了这个问题并且已经发布了解决方案,直到明天我才能将其标记为答案......
      猜你喜欢
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      相关资源
      最近更新 更多