WPF中切换按钮的代码设计
我在WPF中有一个切换按钮,当用户单击它时,它会更改其图标。 这个的最佳设计是什么?单击按钮时,事件处理程序 被称为。然后呢?我应该使用依赖属性吗WPF中切换按钮的代码设计,wpf,togglebutton,Wpf,Togglebutton,我在WPF中有一个切换按钮,当用户单击它时,它会更改其图标。 这个的最佳设计是什么?单击按钮时,事件处理程序 被称为。然后呢?我应该使用依赖属性吗 谢谢您应该使用样式事件触发器 制作如下样式: <Style TargetType="{x:Type ToggleButton}"> ... </Style> 您可以使用样式和触发器来完成它。我不知道这是否是最好的方法,但这是一种全XAML方法,我喜欢。我最近也是这样做的: <Style x:Key="ZoomTo
谢谢您应该使用样式事件触发器 制作如下样式:
<Style TargetType="{x:Type ToggleButton}">
...
</Style>
您可以使用样式和触发器来完成它。我不知道这是否是最好的方法,但这是一种全XAML方法,我喜欢。我最近也是这样做的:
<Style x:Key="ZoomToggleButton" TargetType="{x:Type ToggleButton}">
<Setter Property="Content">
<Setter.Value>
<Image Source="/[my assembly];component/Resources/Images/Zoom_Out.png" Width="15" Height="15" Stretch="None" />
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true" CornerRadius="4">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="true">
<Setter Property="Content">
<Setter.Value>
<Image Source="/[my assembly];component/Resources/Images/Zoom_In.png" Width="15" Height="15" Stretch="None" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
您也可以不使用自定义ControlTemplate,通过使用Style.Triggers更改Content属性的值来完成此操作。可以通过Style Triggers完成:
<Setter Property="Content">
<Setter.Value>
<Image Source="UncheckedImage.png" />
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Content">
<Setter.Value>
<Image Source="CheckedImage.png" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
ContentToggleButton的样式:
用法:
<local:ContentToggleButton>
<local:ContentToggleButton.UncheckedContent>
<Image Source="UncheckedImage.png" />
</local:ContentToggleButton.UncheckedContent>
<local:ContentToggleButton.CheckedContent>
<Image Source="CheckedImage.png" />
</local:ContentToggleButton.CheckedContent>
</local:ContentToggleButton>
这还允许您通过这些属性重新分配图像,而无需覆盖触发器。我想说的是,使用带有触发器的按钮上的样式来更改图标。。。
<Setter Property="Content" Value="{Binding RelativeSource={RelativeSource Mode=Self}, Path=UncheckedContent}" />
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Content" Value="{Binding RelativeSource={RelativeSource Mode=Self}, Path=CheckedContent}" />
</Trigger>
</Style.Triggers>
<local:ContentToggleButton>
<local:ContentToggleButton.UncheckedContent>
<Image Source="UncheckedImage.png" />
</local:ContentToggleButton.UncheckedContent>
<local:ContentToggleButton.CheckedContent>
<Image Source="CheckedImage.png" />
</local:ContentToggleButton.CheckedContent>
</local:ContentToggleButton>