wpf切换按钮:将文本和图像一起显示为内容
我有一个切换按钮,我想显示一个图像和一些文本时,切换按钮选中 当取消选中时,我想显示另一个图像和另一个文本 这是我的Xaml:wpf切换按钮:将文本和图像一起显示为内容,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我有一个切换按钮,我想显示一个图像和一些文本时,切换按钮选中 当取消选中时,我想显示另一个图像和另一个文本 这是我的Xaml: <Window.Resources> <Image Source="DeActiveButton.png" x:Key="ImgDeactivate" /> <Image Source="ActiveButton.png" x:Key="ImgActivate" /> <Style TargetTy
<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
s像ToggleButton
一样只能有一个UIElement
作为其内容。但是,这个元素很容易成为容器控件,例如网格
或堆栈面板
。将容器控件设置为单个内容元素后,就可以随意添加任意数量的项
如果在ToggleButton
的ControlTemplate
中定义这些控件,则可以在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>
ContentControl
s像切换按钮
只能有一个ui元素
作为其内容。但是,这个元素很容易成为容器控件,例如网格
或堆栈面板
。将容器控件设置为单个内容元素后,就可以随意添加任意数量的项
如果在ToggleButton
的ControlTemplate
中定义这些控件,则可以在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>
你不能放一个stackpanel吗?类似于:“@sexta13但当切换按钮的状态改变时,我如何更改图像和文本您不放置堆栈面板吗?”类似于:“@sexta13但当切换按钮的状态改变时,我如何更改图像和文本