所有切换按钮的单一样式,但具有不同的静态内容

时间:2015-04-20 08:14:21

标签: wpf xaml triggers toggle wpf-style

静态资源样式

<Style TargetType="{x:Type ToggleButton}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ToggleButton">
                                <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" Background="{TemplateBinding Background}">
                                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="Background" Value="Red"></Setter>
                    <Style.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter  Property="Background" Value="Green" />
                        </Trigger>
                    </Style.Triggers>
                </Style>

切换按钮代码

<ToggleButton  Grid.Row="3" Grid.Column="1" ToolTip="Toggle to Show and Hide Date" IsChecked="True" Cursor="Hand">
                <ToggleButton.Style>
                    <Style TargetType="{StaticResource ToggleButton}">
                    <Setter Property="Content" Value="No Date" />

                    <Style.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter  Property="Content" Value="Date" />
                        </Trigger>
                    </Style.Triggers>
                    </Style>
                </ToggleButton.Style>
            </ToggleButton>

但我无法将内容获取错误设置为Content is not recognized or inaccessible.

我不是WPF的常用用户。

由于

1 个答案:

答案 0 :(得分:3)

在切换按钮代码中,更改

<Style TargetType="{StaticResource ToggleButton}">

<Style TargetType="{x:Type ToggleButton}"  BasedOn="{StaticResource {x:Type ToggleButton}}">

您可以为全局控件定义一个/可能适用于该类型的所有控件的样式,但是当您必须为个别控件提供一些额外的样式时,您可以通过在控件中创建一个样式并将其基于全球风格的风格。

这个basedOn可以在样式x:Type(在我的回答中)完成,或者也可以基于x:Name,如果你想基于特定的样式。