删除'选择'来自listview控件

时间:2015-06-30 00:30:44

标签: c# wpf radio-button styling listviewitem

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

我的窗口上有一个listview,如下所示:

<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>

当选择其中一个单选按钮时,它具有灰色背景和项目周围的边框。我想删除/隐藏背景和边框。我该怎么做?

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

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

编辑:添加图片以说明我想要实现的目标。我想要围绕男性的边界和背景。 radiobutton删除/隐藏。所以这就是我所拥有的:

Part of my form

这就是我想要的: Expected

这是我认为应该有用的(根据答案到目前为止,但没有做任何事情。风格保持不变。)

<!-- 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>

2 个答案:

答案 0 :(得分:0)

您&#39;应该添加一个样式触发器:

            <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-tutorial.com/styles/trigger-datatrigger-event-trigger/
这只是向您展示正确方法的一个例子!希望它有所帮助

答案 1 :(得分:0)

好的,我不知道我做了什么,但我找到了答案,我在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>