2
<Button Content="1" Background="{Binding HotNumbers, Converter={StaticResource BrushConverter}  }"/>
<Button Content="2" Background="{Binding HotNumbers, Converter={StaticResource BrushConverter}  }"/>

..

我有 10 个按钮。我正在尝试将每个的背景颜色绑定到ObservableCollection<bool>. 我尝试使用 aIValueConverter将布尔值转换为画笔颜色,如下所示。

但是整个集合似乎是在对象值中传递的,而不是在转换器中引发异常的单个项目。

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
             if ((bool)value)
            {
                return Brushes.Red;
            }
            else
            {
                return Brushes.White;
            }
        }

有没有其他方法可以做到这一点,这样我就不必为每个按钮创建 10 个不同的属性。

4

2 回答 2

2

你为什么不像这样在你的 xaml 代码中简单地添加 ConverterParameter 呢?

Background="{Binding HotNumbers, Converter={StaticResource BrushConverter}, ConverterParameter=1 } "

然后在你的转换器中,你使用你的对象参数来访问你的数组的特定布尔项,就像这样?

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if ((bool)value[(int)parameter])
        {
            return Brushes.Red;
        }
        else
        {
            return Brushes.White;
        }
    }
于 2015-09-09T08:21:07.140 回答
2

我认为它只适用于此:

<Button Content="1" Background="{Binding HotNumbers[0], Converter={StaticResource BrushConverter}}"/>
<Button Content="2" Background="{Binding HotNumbers[1], Converter={StaticResource BrushConverter}}"/>
于 2015-09-09T10:10:15.333 回答