WPF数组属性绑定

时间:2011-03-25 10:09:36

标签: wpf xaml

无论我在互联网上找到多少类似的解决方案,我似乎无法想出这一点。这是我的问题。

我的WPF UserControl(MyControl)中有一个Brushes []属性。我希望能够使用几个静态定义的画笔来设置此控件的实例。我当时认为XAMl看起来像

<Snip>
    <Window.Resources>
    <Color x:Key="ColorA">#304B82</Color>
    <Color x:Key="ColorB">#F3F3F3</Color>

    <x:ArrayExtension Type="Brush" x:Key="myBrushes">
    <SolidColorBrush Color="{StaticResource ColorA}"/>
    <SolidColorBrush Color="{StaticResource ColorB}"/>
    </x:ArrayExtension>

    <Style>
       //Magic here to apply myBrushes to the Brushes array
    </Style>

    </Window.Resources>


    <MyNamespace:MyControl>
    </MyNamespace:MyControl>
<Snap>

带有MyControl的.cs文件包含此gem。在某些时候,我正在使用画笔绘画。

    public Brush[] Brushes
    {
        get { return (Brush[])GetValue(BrushesProperty); }
        set { SetValue(BrushesProperty, value); }
    }

    public static readonly DependencyProperty BrushesProperty = DependencyProperty.Register(
      "Brushes", typeof(Brush[]), typeof(MyControl), new PropertyMetadata(new Brush[]{}));

好吧,你可以想象到目前为止一切都没有。对于正确方向的一些指示,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

您应该可以将Brushes绑定到myBrushes,就像这样

<Window.Resources>
    <Color x:Key="ColorA">#304B82</Color>
    <Color x:Key="ColorB">#F3F3F3</Color>
    <x:Array Type="Brush" x:Key="myBrushes">
        <SolidColorBrush Color="{StaticResource ColorA}"/>
        <SolidColorBrush Color="{StaticResource ColorB}"/>
    </x:Array>
    <Style TargetType="{x:Type my:MyControl}">
        <Setter Property="Brushes"
                Value="{Binding Source={StaticResource myBrushes}}"/>
    </Style>
</Window.Resources>