【发布时间】:2021-08-07 10:09:15
【问题描述】:
我在ResourceDictionary 中更改了我的单选按钮的图像(无论是否单击),如下所示:
<Style TargetType="{x:Type RadioButton}"
x:Key="MenuButtonTheme">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="RadioButton">
<Grid Background="{TemplateBinding Background}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Image x:Name="SidebarRadioButtonMenuIcon"
Source="/UiDesign/Images/SidebarIcons/logout.png"
Width="18.57"
Height="18.57"
Grid.Column="0" />
<TextBlock x:Name="SidebarRadioButtonMenuText"
Text="{TemplateBinding Property=Content}"
VerticalAlignment="Center"
Foreground="#7D8083"
FontSize="14.59"
FontWeight="Bold"
FontFamily="/UiDesign/Fonts/#Nunito"
Margin="12,0,0,0"
Grid.Column="1" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked"
Value="True">
<Setter TargetName="SidebarRadioButtonMenuText"
Property="Foreground"
Value="#F54342" />
<Setter TargetName="SidebarRadioButtonMenuIcon"
Property="Source"
Value="/UiDesign/Images/SidebarIcons/Selected/logout.png" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Background"
Value="Transparent" />
</Style.Setters>
</Style>
上面的代码运行良好。但我的菜单包含超过 1 个单选按钮。
这就是我应用我的风格的方式:
<RadioButton Content="Dashboard"
Grid.Column="1"
Grid.Row="0"
Style="{StaticResource MenuButtonTheme}" />
这是我的按钮的样子:
当我选择一个菜单项时,它将如下所示:
(IsChecked true 和 false 的图像对于我所有的菜单项(即RadioButtons)都是相同的)
问题是,我是否必须为每个按钮创建一个ResourceDictionary,以便在我选择它们时它们的图像会发生变化(当然,更改它们的默认图像)?
这是我想要实现的:
【问题讨论】:
-
我有一组单选按钮。我已经在我的 app.xaml 中注册了资源字典。让我更新问题以更清楚。
-
如果下面的答案没有回答问题,我会更新。
-
图像相同的原因是您为两者提供了相同的图像路径。会不会是因为这个?当我这样做并给出不同的图片时,RadioButton 绘画作品。
-
是的,它只是用于测试目的。但是,如果我更改每个项目的默认和“选定”图像,是否需要为每个按钮创建另一个资源字典?
标签: wpf xaml radio-button