Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试通过带有x:Key的ResourceDictionary通过StaticResource访问样式信息_C#_Wpf_Xaml - Fatal编程技术网

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

C# 尝试通过带有x:Key的ResourceDictionary通过StaticResource访问样式信息,c#,wpf,xaml,C#,Wpf,Xaml,WPF资源通过StaticResources访问外部资源字典中的外部样式信息时遇到问题 我继承了一组代码,这些代码在WPF中使用了大量DynamicResources来从Shared.xaml获取样式信息。我希望它们是静态资源,以便设计器视图变得有用。我发现我可以在这个东西的.Resources中添加一个ResourceDictionary,除非WPF中已经有一个.Resources在使用,否则它可以正常工作。在这种情况下,我被告知需要向我的ResourceDictionary添加一个x:Key

WPF资源通过StaticResources访问外部资源字典中的外部样式信息时遇到问题

我继承了一组代码,这些代码在WPF中使用了大量DynamicResources来从Shared.xaml获取样式信息。我希望它们是静态资源,以便设计器视图变得有用。我发现我可以在这个东西的.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>

有什么想法吗?


<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的新实例。你应该看看