IValueConverter用于收集

时间:2012-09-10 20:26:46

标签: c# silverlight data-binding combobox ivalueconverter

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

2 个答案:

答案 0 :(得分:3)

我决定在发布这个问题之前再尝试一次,最后得到了我的回答。这种情况的关键是使用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反之亦然。

答案 1 :(得分:0)

嗨以下是可能对您有帮助的示例......

将转换器绑定到Control: -


&LT; sdk:DataGridTextColumn x:Name =“clientReturnStatus”Binding =“{Binding atclientreturns, Converter = {StaticResource ReturnStatusConverter},ConverterParameter = ReturnStatus,Mode = TwoWay}“
标题=“返回状态”宽度=“110”/&gt;


转换Metho: -

公共对象转换(对象值,类型targetType,对象参数,System.Globalization.CultureInfo文化)

    {
        string Text = "";            

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

            }
        }
        return Text;
    }