Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用代码更改样式_C#_Xaml_Hyperlink - Fatal编程技术网

C# 用代码更改样式

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

我有一个XAML文件,我在其中为一些内容定义了一个超链接样式。如何使用代码将样式更改为其他样式

特别是label3上的样式化超链接

<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"];