C# 如何做';输入绑定';在';边界';元素是否正确?

C# 如何做';输入绑定';在';边界';元素是否正确?,c#,wpf,mvvm,C#,Wpf,Mvvm,我有一个WPFListBox,它使用DataTemplate作为itemtplate。此数据模板由一个边框和几个子元素组成 我想要一个公共命令(“SelectImageCommand”)来处理鼠标左键单击边框区域中的任意位置(任何子元素或空边框本身) 我在边框中放置了一个InputBinding。命令将按偏好执行,但“视觉选择”(永久更改背景颜色)不再发生。如果我删除鼠标绑定,则视觉选择效果良好 通过为MouseLeftButtonDown事件添加一个事件处理程序,我能够实现一个非MVVM解决方

我有一个WPF
ListBox
,它使用
DataTemplate
作为
itemtplate
。此
数据模板
由一个
边框
和几个子元素组成

我想要一个公共命令(“SelectImageCommand”)来处理鼠标左键单击
边框
区域中的任意位置(任何子元素或空边框本身)

我在
边框中放置了一个
InputBinding
。命令将按偏好执行,但“视觉选择”(永久更改背景颜色)不再发生。如果我删除
鼠标绑定
,则视觉选择效果良好

通过为
MouseLeftButtonDown
事件添加一个事件处理程序,我能够实现一个非MVVM解决方案

在我看来,
MouseBinding
正在以与实现事件处理程序相同的方式“处理”鼠标单击事件,并将
MouseButtonEventArgs的
Handled
属性设置为true

如何执行MVVM
MouseBinding
而不捕获单击事件

我不是WPF专业人士。请尝试提供符合MVVM的解决方案


设置
边框的
背景属性

<Border Padding="10" Width="325" Height="350" BorderThickness="0" Margin="5"
        Background="Transparent">
...

...

否则,未绘制区域将不会响应鼠标事件。

设置
边框的
背景
属性:

<Border Padding="10" Width="325" Height="350" BorderThickness="0" Margin="5"
        Background="Transparent">
...

...

否则,未上漆区域将不会响应鼠标事件。

谢谢您的提示!现在,该命令按优先顺序执行。但“光学”选择现在只有在双击任意自由边界区域时才会发生。鼠标悬停时,背景会改变,但一次点击不会引起视觉变化。我更新了问题和代码。解决方案仅适用于丑陋的事件处理程序解决方案,而不适用于
鼠标绑定
。感谢您的提示!现在,该命令按优先顺序执行。但“光学”选择现在只有在双击任意自由边界区域时才会发生。鼠标悬停时,背景会改变,但一次点击不会引起视觉变化。我更新了问题和代码。解决方案仅适用于丑陋的事件处理程序解决方案,而不适用于
MouseBinding