2011-03-25 265 views
0

無論我在互聯網上找到多少類似的解決方案,我都無法想象這個問題。這是我的問題。WPF數組屬性綁定

我在我的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

你應該能夠只綁定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> 
+0

非常感謝您! – Gleno 2011-03-25 19:27:21