wpf 如何通过代码访问资源(样式)?

sf6xfgos  于 2023-10-22  发布在  其他
关注(0)|答案(3)|浏览(208)

我有一个资源字典包含我所有的程序控件的自定义样式。字典与应用程序的资源合并,如下所示:

<ResourceDictionary x:Key="Controls">
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Controls.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

我可以通过xaml轻松访问不同的样式:

<Button Style="{StaticResource Button}" />

但是,每当我尝试通过代码分配这种风格的控件时,它都会失败。
我试过:

Button.Style = Application.Current.Resources("Button")

    Button.Style = CType(Application.Current.Resources("Button"), Style)

和类似于上面的不同方法。在测试一些不同的方法来获得的风格,我面临着“资源找不到”,但当使用上述的程序似乎找到了风格。我可以成功地运行程序-但没有任何视觉证据证明这种风格确实适用。
如何正确地将资源字典中的样式分配给控件?

qf9go6mv

qf9go6mv1#

  • 对于任何后代:下面是我如何成功地通过代码将样式从资源应用到动态创建的控件。(假设您有一个包含样式的资源字典)*
    第一步:包含资源字典

若要使资源字典易于从代码访问,请通过代码添加它。
VB

Dim myResourceDictionary As New ResourceDictionary
  myResourceDictionary .Source = New _
  Uri("/YourApplication;component/YourDictionary.xaml",
        UriKind.RelativeOrAbsolute)

C#语言

var myResourceDictionary = new ResourceDictionary
       {
           Source = new Uri("/YourApplication;component/YourDictionary.xaml", UriKind.RelativeOrAbsolute)
       };

将“YourApplication”替换为您的解决方案名称,将“YourDictionary”替换为您的资源字典文件。

第二步:指定样式

要使用新导入的资源字典,只需为控件指定样式;
VB

Dim myButton As New Button
  Dim myButtonStyle As Style = myResourceDictionary("YourStyleKey")
  myButton.Style = myButtonStyle

C#语言

var myButtonStyle= myResourceDictionary["YourStyleKey"] as Style;
  var myButton = new Button { Style = myButtonStyle };
4zcjmb1e

4zcjmb1e2#

使用应用程序.当前.资源[“按钮”]。

7cwmlq89

7cwmlq893#

我的问题是使用嵌套字典,在这种情况下,直接使用Application.Current.Resources[]App.Current.FindResource()访问资源是行不通的。
我必须指定特定的字典才能访问资源:

((ResourceDictionary)Application.Current.Resources["ResourceDictionary"])["StaticResource"]

相关问题