Как динамически изменить цвет прямоугольника в 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);