我遇到WPF资源在外部ResourceDictionary中通过StaticResources访问外部样式信息的问题。
我继承了一堆代码,这些代码在WPF中使用了大量的DynamicResource来从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>
有什么想法吗?
答案 0 :(得分: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