【问题标题】:Trying to access style info by StaticResource through ResourceDictionary with x:Key尝试通过带有 x:Key 的 ResourceDictionary 访问 StaticResource 的样式信息
【发布时间】:2013-02-07 18:06:36
【问题描述】:

我在 WPF 资源通过 StaticResources 访问外部 ResourceDictionary 中的外部样式信息时遇到问题。

我继承了一堆代码,这些代码在其 WPF 中使用大量 DynamicResources 从 Shared.xaml 获取样式信息。我宁愿它们是 StaticResources 以便设计器视图变得有用。我发现我可以在事物的 .Resources 中添加一个 ResourceDictionary,除非 WPF 中已经有一个 .Resources 使用,否则它可以正常工作。在那种情况下,我被告知我需要在我的 ResourceDictionary 中添加一个 x:Key。我这样做了,只是现在我不知道如何使用该密钥静态查找资源。

小例子:

<UserControl x:Class="myClass"
  ...>
  <UserControl.Resources>
    <ResourceDictionary x:Key="Shared.xaml" Source="/ExteralResource;component/Shared.xaml"/>
    <BooleanToVisibilityConverst x:Key="BoolToVis">
  </UserControl.Resources>

  <TextBlock Background="{StaticResource BrushFromSharedXAML}" /> <!-- Never finds BrushSharedXAML -->
</UserControl>

有什么想法吗?

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:
    <UserControl.Resources>
      <ResourceDictionary>
          <ResourceDictionary.MergedDictionaries>
              <ResourceDictionary Source="/ExteralResource;component/Shared.xaml"/>
          </ResourceDictionary.MergedDictionaries>
          <BooleanToVisibilityConverst x:Key="BoolToVis">
      </ResourceDictionary>
    </UserControl.Resources>
    

    但请注意,在每个用户控件中执行此操作会占用大量 RAM,因为您实际上是在运行时为此控件的每个实例创建 Shared.xaml ResourceDictionary 的新实例。你应该看看SharedResourceDictionary

    【讨论】:

      猜你喜欢
      • 2020-03-30
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      相关资源
      最近更新 更多