0

我有一个在资源中有一个 ResourceDictionary 的窗口。我制作了一个 CheckBox 样式,它基于 ResourceDictionary 中定义的样式。更重要的是,我想制作一个基于 ToggleButton 样式的 RadioButton,它不是基于 ResourceDictionary 中定义的样式。我使用了 ControlTemplate,如下面的代码所示,但在这种情况下,TemplateBinding 对于所有涉及的属性都是必需的。有没有更好的方法来实现我的目的而不使用 ControlTemplate?

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/theme;component/BasicTheme.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
<Grid>

    <Grid.Resources>
        <Style TargetType="CheckBox" BasedOn="{StaticResource {x:Type CheckBox}}">
            <!-- Several style setters -->
        </Style>
        <Style x:Key="Edit"/>
        <ControlTemplate x:Key="ToggleTemplate" TargetType="{x:Type ToggleButton}">
            <ToggleButton Style="{StaticResource Edit}"
                      Content="{TemplateBinding Content}"
                      IsChecked="{TemplateBinding IsChecked}"/>
        </ControlTemplate>
    </Grid.Resources>

    <CheckBox/>
    <RadioButton Template="{DynamicResource ToggleTemplate}"/>

</Grid>

以下代码无法正常工作。

<Grid>

    <Grid.Resources>
        <Style x:Key="Edit"/>
        <Style TargetType="{x:Type RadioButton}" BasedOn="{StaticResource Edit}" x:Key="ToggleStyle"/>
    </Grid.Resources>

    <RadioButton Style="{StaticResource ToggleStyle}"/>

</Grid>
4

0 回答 0