Как сделать стиль на основе ресурса, отличного от StaticResource

У меня есть окно, которое имеет ResourceDictionary в ресурсах. Я сделал стиль CheckBox, основанный на том, который определен в ResourceDictionary. Более того, я хотел бы сделать RadioButton на основе стиля ToggleButton, который НЕ основан на том, который определен в 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>

0 ответов

Другие вопросы по тегам