如何从单选按钮中删除禁用的效果?

时间:2015-05-21 07:14:40

标签: c# wpf

我想要一个单选按钮,其IsEnable属性的视觉外观不会发生任何变化。但是,单选按钮不允许用户在其IsEnable属性为False时执行任何操作。

我只想要一个看起来相同的单选按钮,而不管它的IsEnable属性如何。除了视觉外观,其他一切都应该按原样运作。

您可能会发现这是一个最奇怪的要求。但我想实现这一目标。我在列表框中使用单选按钮作为列表框项目。一切都很好,但是当用户执行Ctrl鼠标左键单击选中的单选按钮时会出现问题。这就是一切都失败的地方。

请帮帮我。

2 个答案:

答案 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)

阿斯温,

非常简单

按照步骤操作。

  1. 右键单击RadioButton,编辑模板和编辑副本

  2. 然后转到创建的样式并注释掉禁用视觉状态的故事板中的代码,如此图像所示&#34; http://i.stack.imgur.com/3TNoR.png&#34;

  3. 然后两个州必须看起来相同。 看看结果&#34; http://i.stack.imgur.com/fCL47.png&#34;

  4. 希望它能解决你的目的。 谢谢,