我有一个切换按钮,当切换按钮选中时,我想显示一个图像和一些文本
当未选中时,我要显示其他图像和其他文本。

这是我的Xaml:

<Window.Resources>
<Image Source="DeActiveButton.png"
       x:Key="ImgDeactivate" />
<Image Source="ActiveButton.png"
       x:Key="ImgActivate" />

<Style TargetType="{x:Type ToggleButton}"
       x:Key="MyToggleButtonStyle">
    <Setter Property="Content"
            Value="{DynamicResource ImgDeactivate}" />
    <Style.Triggers>
        <Trigger Property="IsChecked"
                 Value="True">
            <Setter Property="Content"
                    Value="{DynamicResource ImgActivate}" />
        </Trigger>
    </Style.Triggers>
</Style>
</Window.Resources>

<Grid>
 <ToggleButton x:Name="btnDeactivate"
                          HorizontalAlignment="Stretch"
                          VerticalAlignment="Stretch"
                          Width="85"
                          Content="Deactivate"
                          Style="{DynamicResource MyToggleButtonStyle}">
            </ToggleButton>
</Grid>

但是上面的xaml仅显示图像,我想随图像一起显示一些文本取决于切换按钮的状态如何完成此操作

最佳答案

ContentControl这样的ToggleButton只能包含一个UIElement作为其内容。但是,这个元素很容易成为容器控件,例如GridStackPanel。将容器控件设置为单个内容元素后,您可以随意添加任意数量的项。

如果在ControlTemplateToggleButton中定义这些控件,则可以在ControlTemplate.Triggers部分中引用它们。尝试这样的事情:

<ToggleButton>
    <ToggleButton.Style>
        <Style TargetType="{x:Type ToggleButton}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                                <RowDefinition />
                            </Grid.RowDefinitions>
                            <TextBlock Name="Text" Text="Here's some text" HorizontalAlignment="Center" />
                            <Image Name="Image" Grid.Row="1" Source="/AppName;component/Images/UncheckedImage.png" />
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsChecked" Value="True">
                                <Setter TargetName="Text" Property="Text" Value="Here's some different text" />
                                <Setter TargetName="Image" Property="Source" Value="/AppName;component/Images/CheckedImage.png" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ToggleButton.Style>
</ToggleButton>

关于wpf - wpf切换按钮: Display text along with image as content,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23338030/

10-11 02:28