如何在Expander中动态更改矩形颜色?

时间:2014-08-05 12:20:27

标签: c# wpf wpf-controls controltemplate 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 个答案:

答案 0 :(得分:0)

如果你想在后面的代码中更改它,我将使用{DynamicResource key}绑定绑定到画笔资源。然后,您的代码可以将该资源更新为您需要的任何内容。

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

如果要通过视图模型中的数据对其进行控制,请使用数据触发器。 Link to similar answer

如果您将其基于多个绑定 - 您可以使用带转换器的多重绑定:Tutorial here

答案 1 :(得分:0)

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

ExpanderButtonRectangle.Fill = new SolidColorBrush(Colors.Red);