Привязка свойств массива WPF - PullRequest
0 голосов
/ 25 марта 2011

Я не могу понять это, независимо от того, сколько похожих решений я нахожу в Интернете. Вот моя проблема.

У меня есть свойство Brushes [] в моем WPF UserControl (MyControl). Я хочу иметь возможность стилизовать экземпляры этого элемента управления с помощью нескольких статически определенных кистей. Я думал, что 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>

Файл .cs с MyControl содержит этот драгоценный камень. В какой-то момент я использую кисти для рисования чего-либо.

    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 Ответ

1 голос
/ 25 марта 2011

Вы можете просто привязать 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...