0

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

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

最小的例子:

<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>

有任何想法吗?

4

1 回答 1

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

于 2013-02-07T18:15:48.617 回答