【问题标题】:how to dynamically change rectangle color in Expander?如何在 Expander 中动态更改矩形颜色?
【发布时间】:2014-08-05 12:20:27
【问题描述】:

我有一个扩展器,其中有带颜色的矩形。我想在某些功能后动态更改。如何在运行时更改它?

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

任何人都可以帮助:

【问题讨论】:

  • 什么是触发变化的运行时事件?
  • 实际上在扩展器中我有一个网格和一些复选框,我希望当所有复选框都被选中时,矩形颜色应该是绿色。这就是为什么我想访问矩形并动态改变它的颜色。

标签: c# wpf wpf-controls controltemplate expander


【解决方案1】:

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

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

如果您想通过视图模型中的数据来控制它,请使用数据触发器。 Link to similar answer

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

【讨论】:

  • 我做了这样的事情,但它仍然不会改变扩展器边框中矩形的颜色... System.Windows.Shapes.Rectangle temprect = (System.Windows.Shapes.Rectangle)FindResource("展开矩形"); temprect.Fill = new SolidColorBrush(Colors.Green);
【解决方案2】:
<Rectangle Fill="Transparent" x:Name="ExpanderButtonRectangle"
                   Grid.ColumnSpan="2"/>

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

【讨论】:

  • 我试过了,我不能直接在我的代码中访问矩形,我可能不得不搜索 findresource,因为我在 中有它,但是因为我在 ControlTemplate -> Boder 中有矩形 - > 网格,所以我不知道如何访问它。
猜你喜欢
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 2022-07-01
  • 1970-01-01
相关资源
最近更新 更多