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