我正在开发一个WPF应用程序,它使用存储在许多资源字典中的样式,在App.xaml中引用,我一直在努力限制内部使用的样式的可见性,以构建控件模板。
假设我有ResourceDictionary
名为ButtonStyles
,其中包含以下内容:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ButtonInternalStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource SomeInternalStyle}">
<!--Setters-->
</Style>
我还有一个名为ResourceDictionary
的{{1}},其中包含:
ButtonInternalStyles
我的App.xaml仅引用<Style x:Key="SomeInternalStyle" TargetType="{x:Type Button}">
<!--Setters-->
</Style>
ButtonStyles
,但我可以在我的观看中使用ResourceDictionary
,我不希望这样做。
有没有办法限制SomeInternalStyle
的展示率,所以我只能在ButtonInternalStyles
中使用它?
答案 0 :(得分:2)
有没有办法限制ButtonInternalStyles的可见性,所以我只能在ButtonStyles中使用它?
不,我认为你不能这样做。 ResourceDictionary
中定义的所有资源合并到另一个确实在范围内的ResourceDictionary
中的资源也将在范围内。这就是资源字典的工作方式。
我真的没有看到这个问题。如果您想阻止ResourceDictionary
的消费者意外使用您的“内部”风格,您可能会给它一些难以猜测的名称,例如:
<Style x:Key="ffdsghdfsgh" TargetType="{x:Type Button}">
...
当然,如果您使用一些提供IntelliSense支持的Visual Studio工具,这将无济于事,我认为您最好不要更改样式的名称。这不值得努力。