我想要一个单选按钮,其IsEnable属性的视觉外观不会发生任何变化。但是,单选按钮不允许用户在其IsEnable属性为False时执行任何操作。
我只想要一个看起来相同的单选按钮,而不管它的IsEnable属性如何。除了视觉外观,其他一切都应该按原样运作。
您可能会发现这是一个最奇怪的要求。但我想实现这一目标。我在列表框中使用单选按钮作为列表框项目。一切都很好,但是当用户执行Ctrl鼠标左键单击选中的单选按钮时会出现问题。这就是一切都失败的地方。
请帮帮我。
答案 0 :(得分:2)
您必须提取RadioButton的ControlTemplate,然后删除Disable触发器的样式。下面是RadioButton的标准模板示例。只需注释掉触发器IsEnable = False
<Style x:Key="RadioButtonStyle1" TargetType="{x:Type RadioButton}">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="Background" Value="#F4F4F4"/>
<Setter Property="BorderBrush" Value="{StaticResource CheckBoxStroke}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<BulletDecorator Background="Transparent">
<BulletDecorator.Bullet>
<Themes:BulletChrome BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" IsChecked="{TemplateBinding IsChecked}" IsRound="true" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}"/>
</BulletDecorator.Bullet>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</BulletDecorator>
<ControlTemplate.Triggers>
<Trigger Property="HasContent" Value="true">
<Setter Property="FocusVisualStyle" Value="{StaticResource CheckRadioFocusVisual}"/>
<Setter Property="Padding" Value="4,0,0,0"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 1 :(得分:0)
阿斯温,
非常简单
按照步骤操作。
右键单击RadioButton,编辑模板和编辑副本
然后转到创建的样式并注释掉禁用视觉状态的故事板中的代码,如此图像所示&#34; http://i.stack.imgur.com/3TNoR.png&#34;
然后两个州必须看起来相同。 看看结果&#34; http://i.stack.imgur.com/fCL47.png&#34;
希望它能解决你的目的。 谢谢,