【发布时间】:2015-06-30 00:30:43
【问题描述】:
这感觉就像解决方案很明显,但显然不是。
我的窗口上有一个列表视图,定义如下:
<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 question 中的所有解决方案,但没有奏效。
我还能如何在列表视图项上删除此样式。基本上,当控件没有焦点时,我希望灰色背景和边框消失。
编辑:添加图片来说明我想要实现的目标。我希望删除/隐藏“男性”单选按钮周围的边框和背景。所以这就是我所拥有的:
这就是我想要的:
这是我认为应该起作用的(根据到目前为止的答案,但什么也没做。风格保持不变。)
<!-- 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>
【问题讨论】:
标签: c# wpf radio-button styling listviewitem