我在以编程方式更改 TreeView 中的切换颜色时遇到问题。我在 ResourceDictionary SolidColorBrush 中定义:
<SolidColorBrush x:Key="FillBrush" Color="#000000" />
我也在 ResourceDictionary 中为 toggleButton 创建了样式:
<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid Width="auto" Height="auto" Background="Transparent" ShowGridLines="True">
<Path Fill="{StaticResource FillBrush}" x:Name="ExpandPath" HorizontalAlignment="Center" VerticalAlignment="Center"
Data="M 0 0 L 0 2 L 6 0 z M 6 2 L 6 0 L 0 2 z">
</Path>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Data" TargetName="ExpandPath" Value="M 0 0 L 0 8 L 2 0 z M 2 8 L 2 0 L 0 8 z"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
在代码中,我试图以编程方式更改 FillBrush 键的值:
SolidColorBrush cc = (SolidColorBrush)Resources["FillBrush"];
cc.Color=c.Color;
但是当我改变它时,切换按钮不会改变。
任何提示如何更改现有组件的颜色?我对通过 ResourceDictionary 模板化组件有点困惑,所以我猜它那里有问题。感谢所有帮助
编辑:在代码中我“说”使用静态资源。我也用 DynamicResource 尝试过,但什么也没发生,颜色值也没有改变。
编辑 2:如果我检查 FillBrush 资源中的值:
MessageBox.Show(((SolidColorBrush)Resources["FillBrush"]).Color.ToString());
该值将替换为新值。所以它有效。在这种情况下,在 ToggleButton 样式中应用它一定有问题。