Как динамически изменить цвет прямоугольника в Expander?

У меня есть Expander, в котором у меня есть прямоугольник с цветом. я хочу динамически меняться после некоторой функциональности. как изменить его во время выполнения?

 <Windows.Resources>

    <ControlTemplate x:Key="SimpleExpanderButtonTemp" 
         TargetType="{x:Type ToggleButton}">
    <Border x:Name="ExpanderButtonBorder"
        Background="{TemplateBinding Background}"
        BorderBrush="{TemplateBinding BorderBrush}"
        BorderThickness="{TemplateBinding BorderThickness}"
        Padding="{TemplateBinding Padding}"
        >
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <Rectangle x:Name="ExpandRect" Fill="Transparent"
                   Grid.ColumnSpan="2"/>

        <Ellipse Name="Circle"
             Grid.Column="0"
             Stroke="DarkGray"
             Width="20"
             Height="20"
             HorizontalAlignment="Center"
             VerticalAlignment="Center"
             />

    </Grid>
</Border>
</>
</Windows.Resources>

Кто-нибудь поможет:

2 ответа

Если вы хотите изменить это в коде, я бы привязал к ресурсу кисти, используя привязку {DynamicResource key}. Ваш код может затем обновить этот ресурс так, как вам хочется, где бы он вам ни понадобился.

this.Resource["RectangleBrush"] = new SolidColorBrush(Colors.Red);

Если вы хотите управлять им через данные в модели представления, используйте datatrigger. Ссылка на аналогичный ответ

Если вы основываете его на нескольких связываниях - вы можете использовать множественное связывание с конвертером: учебное пособие здесь

<Rectangle Fill="Transparent" x:Name="ExpanderButtonRectangle"
                   Grid.ColumnSpan="2"/>

ExpanderButtonRectangle.Fill = new SolidColorBrush(Colors.Red);
Другие вопросы по тегам