首页 文章

尝试使用StaticResource通过带有x:Key的ResourceDictionary访问样式信息

提问于
浏览
0

我有一个问题,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>

有任何想法吗?

1 回答

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

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

相关问题