WPF运行时设置静态资源

5
如何在运行时使用静态资源设置按钮的样式?xaml看起来像这样:
<Button  Grid.Column="0" Grid.Row="2"  VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="1,0,1,0" 
                     Background="{StaticResource OrangeGradient}"  FontFamily="Lucida Sans"  BorderBrush="Black" >

Background="{StaticResource OrangeGradient}"在运行时C#中会是什么样子?

我的资源字典,Resources/Styles.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:myProj">

<LinearGradientBrush  x:Key="OrangeGradient" EndPoint="0.5,1" StartPoint="0.5,0">
        <LinearGradientBrush.RelativeTransform>
            <TransformGroup>
                <ScaleTransform CenterY="0.5" CenterX="0.5"/>
                <SkewTransform CenterY="0.5" CenterX="0.5"/>
                <RotateTransform Angle="270" CenterY="0.5" CenterX="0.5"/>
                <TranslateTransform/>
            </TransformGroup>
        </LinearGradientBrush.RelativeTransform>
        <GradientStop Color="#FFE08A19" Offset="0"/>
        <GradientStop Color="#FFF5CA86" Offset="1"/>
    </LinearGradientBrush>

App.xaml:

<Application x:Class="myProj.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:myProj"
             StartupUri="MainWindow.xaml">

    <Application.Resources>

        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Resources/Styles.xaml"   />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>

    </Application.Resources>

</Application>

静态资源无法在运行时更改,请使用DynamicResource代替! - Fruchtzwerg
只是想澄清一下,我不想改变资源定义,只是将其应用于按钮。 - Patrick Schomburg
1个回答

3

设置静态资源的背景的等效方法,但是在运行时只需:

yourButton.Background = (Brush)this.Resources["OrangeGradient"];

在这里,Resources 是带有目标笔刷的 ResourceDictionary,例如你的 WindowUserControl 的根 ResourceDictionary


我该如何在我的 App.xaml 文件中访问资源字典? - Patrick Schomburg
@PatrickSchomburg 使用 System.Windows.Application.Current.Resources - Evk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接