gpt4 book ai didi

wpf - 从后面的代码更改样式

转载 作者:行者123 更新时间:2023-12-04 19:17:40 28 4
gpt4 key购买 nike

我有这种风格

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Style x:Key="MainMenuStyle" TargetType="{x:Type TextBlock}">

<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property= "Foreground" Value="White"/>
<Setter Property= "FontSize" Value="22"/>
<Setter Property= "FontFamily" Value="Arial"/>
</Trigger>

<Trigger Property="IsMouseOver" Value="False">
<Setter Property= "Foreground" Value="Black" />
<Setter Property= "FontSize" Value="14"/>
<Setter Property= "FontFamily" Value="Verdana"/>
</Trigger>

</Style.Triggers>

</Style>

现在,如果我想更改 Setter 属性值 从后面的代码我该怎么做?

在后面的代码中,我想要这样的东西:
MainMenuStyle.IsMouseOver(True).Foreground = "Red"
MainMenuStyle.IsMouseOver(True).FontSize = 10

MainMenuStyle.IsMouseOver(False).Foreground = "Green"
MainMenuStyle.IsMouseOver(False).FontSize = 100

我必须只使用框架 4。

谢谢

最佳答案

Giangregorio 涵盖了无法直接实现的大部分原因。但是,这里有一个解决方案:

您可以使用 DynamicResource引用您的风格 Setters ,那么当您需要更改样式时,您只需更新资源 , 而不是样式。举个例子,这可能更有意义:

<!-- Colour Resources -->
<SolidColorBrush x:Key="BlueBrush" Color="Blue"/>
<SolidColorBrush x:Key="RedBrush" Color="Red"/>

<!-- TextBlock Style (References the colour resources) -->
<Style x:Key="MainMenuStyle" TargetType="{x:Type TextBlock}">

<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property= "Foreground" Value="{DynamicResource BlueBrush}"/>
...
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property= "Foreground" Value="{DynamicResource RedBrush}" />
...
</Trigger>
</Style.Triggers>

</Style>

所以。如 Foreground属性引用 DynamicResource , 每当资源发生变化时,它都会更新 Style .您需要在代码中做的就是更改资源值。
App.Current.Resources["BlueBrush"] = new SolidColorBrush(Colors.Pink);
DynamicResource将照顾其余的。

关于wpf - 从后面的代码更改样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34176303/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com