使用WPF中的InputBindings使整个用户控件可单击

时间:2019-02-13 16:34:40

标签: wpf binding user-controls

在我的UserControl中,我在画布内绘制了一些路径

为了打开此UserControl的控制面板,我使用了InputBindings:

<UserControl.InputBindings>
    <MouseBinding Gesture="LeftClick" Command="{Binding OpenControlPanelCommand}"/>
</UserControl.InputBindings>

这仅在我单击绘制的路径时有效。实际上,我希望所有UserControl的表面不仅可以单击绘制部分,而且可以单击。

我设置了用户控件的背景,但是它不起作用

如何更改此行为?

1 个答案:

答案 0 :(得分:0)

这对我有用:

<UserControl …
         Background="Transparent"
         >
    <UserControl.InputBindings>
       <MouseBinding Gesture="LeftClick" Command="{Binding OpenControlPanelCommand}"/>
    </UserControl.InputBindings>
    <Canvas>
        <Path Data="M0,0L25.194,16 0,32z" Stretch="Fill"
              Height="100"
              Width="100"
              Fill="Black"/>
    </Canvas>
</UserControl>

我在窗口中找到它

<Window.DataContext>
    <local:MainWindowViewModel/>
</Window.DataContext>
<Grid>
    <local:UserControl1/>
</Grid>

虚拟机的相关部分:

using …
using GalaSoft.MvvmLight.CommandWpf;
namespace wpf_99
{
    public class MainWindowViewModel : INotifyPropertyChanged
   {
    public ICommand OpenControlPanelCommand { get; set; } = new RelayCommand(() => MessageBox.Show("Hello World"));

您的用户控件是否填充了您期望的区域?

您的命令绑定正确吗?

除了点击之外,还有什么东西