C# 用代码更改样式
我有一个XAML文件,我在其中为一些内容定义了一个超链接样式。如何使用代码将样式更改为其他样式 特别是label3上的样式化超链接C# 用代码更改样式,c#,xaml,hyperlink,C#,Xaml,Hyperlink,我有一个XAML文件,我在其中为一些内容定义了一个超链接样式。如何使用代码将样式更改为其他样式 特别是label3上的样式化超链接 <UserControl x:Class="FHIRCDALoader.Views.SideMenuView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft
<UserControl x:Class="FHIRCDALoader.Views.SideMenuView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" >
<Grid>
<StackPanel Grid.Column="0" HorizontalAlignment="Left" Width="200" Margin="2,0,0,0" Name="stackPanel1" VerticalAlignment="Top" >
<StackPanel.Resources>
<Style x:Key="TxtBlkStyle" TargetType="{x:Type Label}">
<Setter Property="Margin" Value="0,0,0,0" />
<Setter Property="FontWeight" Value="ExtraBold" />
<Setter Property="FontSize" Value="28" />
<Setter Property="Foreground" Value="#FFE7840D" />
</Style>
<Style x:Key="TxtBlkStyle2" TargetType="{x:Type Label}">
<Setter Property="Margin" Value="0,0,0,0" />
<Setter Property="FontWeight" Value= "Regular" />
<Setter Property="FontSize" Value="24" />
<Setter Property="Foreground" Value="#FF4C47FF" />
</Style>
<Style x:Key="TxtSubCommand" TargetType="{x:Type Label}">
<Setter Property="Margin" Value="8,0,0,0" />
<Setter Property="FontWeight" Value= "Regular" />
<Setter Property="FontSize" Value="12" />
<Setter Property="Foreground" Value="White" />
</Style>
<Style x:Key="activeLink" TargetType="{x:Type Hyperlink}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="DarkOrange" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Foreground" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
</StackPanel.Resources>
<Label Content="Start" Name="label1" Style="{StaticResource TxtBlkStyle2}" />
<Label Name="labelloadfile" Style="{StaticResource TxtSubCommand}">
<Label.Content>
<Hyperlink NavigateUri="#" Style="{StaticResource activeLink}" Click="Hyperlink_Load_CDA_File">
Load CDA File
</Hyperlink>
</Label.Content>
</Label>
<Label Content="Edit" Name="label2" Style="{StaticResource TxtBlkStyle2}"/>
<Label Name="label3" Style="{StaticResource TxtSubCommand}">
<Label.Content>
<Hyperlink NavigateUri="#" Style="{StaticResource activeLink}" Click="Hyperlink_Click_TestPage">
Generate New Id
</Hyperlink>
</Label.Content>
</Label>
<Label Name="label4" Style="{StaticResource TxtSubCommand}">
<Label.Content>
<Hyperlink NavigateUri="#" Style="{StaticResource activeLink}" Click="Hyperlink_Click_TestPage">
Generate New SetId
</Hyperlink>
</Label.Content>
</Label>
</StackPanel>
</Grid>
</UserControl>
加载CDA文件
生成新Id
生成新的SetId
以下内容应允许您以编程方式设置样式:
label4.Style = (Style)(this.Resources["ResourceName"]);
我想你可以创造另一种风格,就像这样
<Style x:Key="activeLink2" TargetType="{x:Type Hyperlink}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="DarkOrange" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Foreground" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
这几乎可以工作,但我丢失了直接应用于标签的样式(在本例中是通过TxtSubCommand样式)。没有成功。仔细检查,原因是(Style)Application.Current.Resources[“activeLink2”]返回null,实际上资源集合似乎是空的。这是因为样式是在中定义的吗?请尝试使用this.label3.Style=this.Resources[“RiskDetailsMedia”]作为样式;我已经试过了,但没有成功。该集合也是空的。因此,我将样式从中移出。集合现在已填充,因此更进一步。下一个问题是我现在遇到以下异常:“Hyperlink”TargetType与元素“Label”的类型不匹配。哦,您有超链接的样式,但您正在使用Label
label3.Style = (Style)Application.Current.Resources["activeLink2"];