WPF。使用其他词典中的资源设置BasedOn属性

时间:2018-06-19 11:51:42

标签: c# wpf xaml

我对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作为RoundCornerButtonWithCheckSpecificStyles.xaml的“父”样式,我的意思是,将其作为值BasedOn属性(继承的一种)。

我还尝试过通过以下方式设置属性BasedOnBasedOn="{StaticResource {local:Style RoundCornerButton}}"

由于CommonStyles.xaml位于MyProject /中的Theme /文件夹中,我认为我可以通过local:命名空间以某种方式进行访问, 但我不确定该怎么做。

我一直在查看BasedOn属性和other resources的文档,但仍然感到困惑。

1 个答案:

答案 0 :(得分:1)

如果您希望能够使用CommonStyles.xaml标记扩展名引用SpecificStyles.xamlStaticResource中的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