我对WPF比较陌生。我有两个带有样式定义的字典,以后将在XAML视图中使用。
基本样式(在CommonStyles.xaml
中):
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:MyProject.Theme">
<...>
<Style x:Key="RoundCornerButton" TargetType="{x:Type Button}">
<...>
</Style>
</ResourceDictionary>
特定样式(我尝试过的样式)(在SpecificStyles.xaml
中):
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:MyProject.Theme">
<...>
<Style x:Key="RoundCornerButtonWithCheck" TargetType="{x:Type Button}" BasedOn="{StaticResource RoundCornerButton}">
<...>
</style>
</ResourceDictionary>
我想做的是使用RoundCornerButton
中定义的样式CommonStyles.xaml
作为RoundCornerButtonWithCheck
中SpecificStyles.xaml
的“父”样式,我的意思是,将其作为值BasedOn
属性(继承的一种)。
我还尝试过通过以下方式设置属性BasedOn
:
BasedOn="{StaticResource {local:Style RoundCornerButton}}"
由于CommonStyles.xaml
位于MyProject /中的Theme /文件夹中,我认为我可以通过local:
命名空间以某种方式进行访问,
但我不确定该怎么做。
我一直在查看BasedOn
属性和other resources的文档,但仍然感到困惑。
答案 0 :(得分:1)
如果您希望能够使用CommonStyles.xaml
标记扩展名引用SpecificStyles.xaml
中StaticResource
中的ResourceDictionary
定义的资源,则应将前一个<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="CommonStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="RoundCornerButtonWithCheck" TargetType="{x:Type Button}" BasedOn="{StaticResource RoundCornerButton}">
...
</Style>
</ResourceDictionary>
合并到后者:
GridView