how to dynamically change rectangle color in Expan

2019-08-31 16:55发布

I have an Expander in which i have Rectangle with color. i want to change dynamically after some functionality. how to change it on run time ?

 <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>

Anyone help :

2条回答
冷血范
2楼-- · 2019-08-31 17:20

If you want to change this in code behind, I would bind to a brush resource using {DynamicResource key} binding. Your code behind can then update that resource to whatever you want where ever you need it to.

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

If you want to control it via data in a view model, use a datatrigger. Link to similar answer

If you're basing it on multiple bindings - you can use a multibinding with a converter : Tutorial here

查看更多
男人必须洒脱
3楼-- · 2019-08-31 17:29
<Rectangle Fill="Transparent" x:Name="ExpanderButtonRectangle"
                   Grid.ColumnSpan="2"/>

ExpanderButtonRectangle.Fill = new SolidColorBrush(Colors.Red);
查看更多
登录 后发表回答