【问题标题】:trim down selection area of selected item listview wpf修剪所选项目列表视图wpf的选择区域
【发布时间】:2013-09-16 06:46:50
【问题描述】:

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

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

【问题讨论】:

  • 你为什么把你的按钮放在ListView?为什么不在面板中?
  • 您使用什么事件来捕捉按钮点击?如果这是一个路由事件,请尝试使用 OriginalSource 追溯事件的源头
  • 将它们放在列表视图中的目的是获取文本的值并根据该文本过滤列表。现在听起来是个坏主意。你能建议一些方法吗,我必须将很多这些按钮绑定到视图模型中的命令,这将为搜索条件设置相应的文本。我不想使用很多中继命令来更改文本,我可以看到的其他方法是使用命令参数,但出于单元测试的目的,我也不想使用它。请建议以更少的代码和复杂性实现此目的的最佳方法。

标签: c# wpf listview mvvm


【解决方案1】:

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

或者,您可以将其添加到 Resources 部分,以一起删除默认的蓝色,或将其更改为不同的颜色:

对于Background

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

对于Foreground

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

【讨论】:

  • 我没有 Horizo​​ntalContentAlignment=Strecth,但它仍然显示相同。此外,如果我使用系统颜色技巧,颜色可能不可见,但即使用户在其边界之外单击按钮也会被选中.
猜你喜欢
  • 2017-11-23
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 2011-01-17
  • 2014-09-01
  • 1970-01-01
  • 2012-04-04
相关资源
最近更新 更多