从列表视图控件中的单选按钮中删除 'selection'

Removing the 'selection' from a radio button in a listview control

感觉解决方案很明显,但显然不是。

我的 window 列表视图定义如下:

<ListView SelectedValue="{Binding Gender, ValidatesOnDataErrors=True}" Grid.Column="1" Grid.Row="3" SelectedValuePath="Tag" BorderThickness="0" Margin="2" SelectionMode="Single">
    <RadioButton GroupName="Gender" Margin="2" Tag="M" Content="Male" IsChecked="{Binding RelativeSource={RelativeSource AncestorType=ListViewItem}, Path=IsSelected}"/>
    <RadioButton GroupName="Gender" Margin="2" Tag="F" Content="Female" IsChecked="{Binding RelativeSource={RelativeSource AncestorType=ListViewItem}, Path=IsSelected}"/>
</ListView>

选中其中一个单选按钮后,它的背景和边框为灰色。我想要 remove/hide 背景和边框。我该怎么做?

我试过将 Focusable 设置为 false。各种样式、模板、触发器等,但这些都没有效果。我尝试了 this 问题的所有解决方案,但它们没有用。

我还能如何删除列表视图项目上的这种样式。基本上,当控件没有焦点时,我希望灰色背景和边框消失。

编辑:添加图片来说明我想要实现的目标。我想要 'Male' 单选按钮 removed/hidden 周围的边框和背景。这就是我所拥有的:

这就是我想要的:

这是我认为应该可行的(根据目前的答案,但什么也没做。样式保持不变。)

<!-- This doesn't change the style... -->
<ListView.Resources>
    <Style TargetType="ListViewItem">
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="BorderBrush" Value="Transparent"/>
                <Setter Property="Background" Value="Transparent"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</ListView.Resources>

<!-- Neither does this... -->
<Style TargetType="{x:Type ListViewItem}">
    <Style.Triggers>
        <MultiTrigger>
            <MultiTrigger.Conditions>
                <Condition Property="IsSelected" Value="True"/>
                <Condition Property="IsFocused" Value="False"/>
            </MultiTrigger.Conditions>
            <MultiTrigger.Setters>
                <Setter Property="Foreground" Value="{x:Null}"/>
                <Setter Property="Background" Value="{x:Null}"/>
                <Setter Property="BorderBrush" Value="{x:Null}"/>                          
            </MultiTrigger.Setters>
        </MultiTrigger>
    </Style.Triggers>
</Style>

您应该添加样式触发器:

            <Style TargetType="RadioButton">
                <Style.Triggers>
                    <Trigger Property="IsChecked" Value="True">
                        <Setter Property="Background" Value="YOUR FAVORITE COLOR HERE" />
                        <Setter Property="BorderBrush" Value="YOUR FAVORITE COLOR HERE"/>
                    </Trigger>
                </Style.Triggers>
            </Style>

我参考了这个:www.wpf-教程。com/styles/trigger-datatrigger-event-trigger/
这只是向您展示正确方法的示例!希望对你有帮助

好的,我不知道我做了什么,但我在 this blog post:

中调整 XAML 找到了答案

我最终得到了这个样式,我不知道它有什么作用,但它做了我想要它做的事情。

我的 ListView 的完整 XAML 现在看起来像这样,稍后我会将样式移动到资源字典中。

<ListView SelectedValue="{Binding Gender, ValidatesOnDataErrors=True}" Grid.Column="1" Grid.Row="3" SelectedValuePath="Tag" BorderThickness="0" Margin="2" SelectionMode="Single">
    <ListView.Resources>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <Border x:Name="Bd"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                Background="{TemplateBinding Background}"
                                Padding="{TemplateBinding Padding}"
                                SnapsToDevicePixels="true">
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                        </Border>
                        <ControlTemplate.Triggers>
                            <MultiTrigger>
                                <MultiTrigger.Conditions>
                                    <Condition Property="Selector.IsSelectionActive"
                        Value="False" />
                                    <Condition Property="IsSelected"
                        Value="True" />
                                </MultiTrigger.Conditions>
                                <Setter Property="Background"
                TargetName="Bd"
                Value="Transparent" />
                            </MultiTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.Resources>
    <RadioButton GroupName="Gender" Margin="2" Tag="M" Content="Male" IsChecked="{Binding RelativeSource={RelativeSource AncestorType=ListViewItem}, Path=IsSelected}"/>
    <RadioButton GroupName="Gender" Margin="2" Tag="F" Content="Female" IsChecked="{Binding RelativeSource={RelativeSource AncestorType=ListViewItem}, Path=IsSelected}"/>
</ListView>