C# 精简所选项目的选择区域listview wpf

C# 精简所选项目的选择区域listview wpf,c#,wpf,listview,mvvm,C#,Wpf,Listview,Mvvm,我有一个带有按钮的列表视图。每当我按下按钮时,我都会在视图模型中得到所选的项目,在此基础上,我会执行视图模型操作。我的问题是,如果我在项目外部单击,按钮也会被选中,因为供选择的矩形区域比我的按钮大 如何将选择区域缩小到与我的项目大小相等?要直接回答您的问题,大多数集合控件上都有一个属性,可以选择整行,我怀疑您可能已经设置了该属性。如果已将HorizontalContentAlignment属性设置为Stretch,这就是您的问题所在。删除此属性以删除额外的可选区域 或者,您可以将其添加到参考资

我有一个带有按钮的列表视图。每当我按下按钮时,我都会在视图模型中得到所选的项目,在此基础上,我会执行视图模型操作。我的问题是,如果我在项目外部单击,按钮也会被选中,因为供选择的矩形区域比我的按钮大


如何将选择区域缩小到与我的项目大小相等?

要直接回答您的问题,大多数集合控件上都有一个属性,可以选择整行,我怀疑您可能已经设置了该属性。如果已将
HorizontalContentAlignment
属性设置为
Stretch
,这就是您的问题所在。删除此属性以删除额外的可选区域

或者,您可以将其添加到
参考资料
部分,以删除默认的蓝色,或将其更改为其他颜色:

对于
背景

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black" />

为什么将按钮放在
列表视图中
?为什么不在面板中?您使用什么事件捕捉按钮点击?如果这是一个路由事件,请尝试使用
OriginalSource
追溯到发起事件的源。将它们放在列表视图中的目的是获取其上文本的值,并根据该文本筛选列表。现在听起来这是个坏主意。你能建议一些方法吗,我必须将这些按钮绑定到viewmodel中的命令,这些命令将为搜索条件设置相应的文本。我不想使用很多中继命令来更改文本,我可以看到的另一种方法是使用命令参数,但出于单元测试的目的,我也不想使用它。请建议以较少的代码和复杂性实现这一点的最佳方法。我没有HorizontalContentAlignment=Stretch,但它仍然显示相同的值。此外,如果我使用系统颜色技巧,颜色可能不可见,但即使用户在其边界外单击,按钮也会被选中。