gpt4 book ai didi

wpf - 覆盖切换按钮样式

转载 作者:行者123 更新时间:2023-12-03 14:27:46 25 4
gpt4 key购买 nike

我的窗口中有一个 ToggleButton,并在我的 ResourceDictionary 中设置了样式。它在 ResourceDictionary 中的原因是因为我很快就会有几个或多个 ToggleButton 必须具有相同的外观。

<Style x:Key="Standardbutton" TargetType="{x:Type ToggleButton}">
<Setter Property="FontSize" Value="18" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="Resources/Standard_Button_Normal.png" />
</Setter.Value>
</Setter>
<Setter Property="Height" Value="56" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Border Name="border" BorderThickness="0" Padding="0,0" BorderBrush="DarkGray" CornerRadius="0" Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Center" Name="content" Margin="15,0,0,0"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="Resources/Standard_Button_Pressed.png" />
</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFF9CE7B" Offset="0"/>
<GradientStop Color="#FFE88C41" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

现在,此 ToggleButton 样式具有默认背景,并且当“IsChecked”为真时,它将具有不同的背景(如您在上面的 XAML 代码中所见)。

现在这些切换按钮必须将图标 + 文本组合在一起,就像我在这里所做的那样(对不起我蹩脚的 XAML 代码)
<ToggleButton Style="{DynamicResource Standardbutton}" Margin="0,0,0,4">
<StackPanel Orientation="Horizontal">
<Image Source="Resources/scan_26x26.png" />
<TextBlock Text="Scan"/>
</StackPanel>
</ToggleButton>

问题是,当检查togglebutton时,我如何获得不同的图标(iSchecked = true)?

这里有一些图片可以帮助你理解这个问题

普通切换按钮样式
enter image description here
IsChecked=真实风格
enter image description here
我的设计目标是在 IsChecked=True 时使用不同的图标
enter image description here

最佳答案

将两个图像添加到控件模板中,并绑定(bind)它们的Visibility IsChecked 的属性(property)属性(使用 IValueConverter 将真/假转换为适当的 Visibility 枚举值)。

<ToggleButton Style="{DynamicResource Standardbutton}" Margin="0,0,0,4">
<StackPanel Orientation="Horizontal">
<Image Source="Resources/scan_26x26.png"
Visibility="{Binding
RelativeSource={RelativeSource AncestorType=ToggleButton},
Path=IsChecked,
Converter={StaticResource BoolToVisibleConverter}}" />
<Image Source="Resources/anotherimage.png"
Visibility="{Binding
RelativeSource={RelativeSource AncestorType=ToggleButton},
Path=IsChecked,
Converter={StaticResource BoolToCollapsedConverter}}" />
<TextBlock Text="Scan"/>
</StackPanel>
</ToggleButton>

我用了两个转换器 BoolToVisibleConverterBoolToCollapsedConverter ,但您也可以使用 ConverterParameter完成同样的事情。

关于wpf - 覆盖切换按钮样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com