繁体   English   中英

如何在.NET Windows应用程序中更改鼠标单击触发区域

[英]How to change mouse click trigger area in .NET Windows application

我有一些开发.NET Web应用程序的经验,但是现在我在Windows应用程序上工作。 我在理解UI组件时遇到了麻烦。

特别是:有一个按钮(下图),其中只有文本是可单击的,并且想要对其进行更改以应用于整个行(以蓝色突出显示)。

到目前为止,我发现单击文本会在UI类ProbeTree.xaml.cs调用一个函数:

public partial class ProbeTree : UserControl
{
  private void StackPanel_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
   { etc.. }

然后从文件ProbeTree.gics调用此函数:

void System.Windows.Markup.IStyleConnector.Connect(int connectionId, object target) {
    switch (connectionId)
    {
    case 8:

    #line 189 "..\..\..\..\UI\Protocol\ProbeTree.xaml"
    ((System.Windows.Controls.StackPanel)(target)).PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_PreviewMouseLeftButtonDown);

    #line default
    #line hidden
    break;
    }
}

似乎在此文件中,我应该获得对整行的引用,并将鼠标单击事件而不是当前target参数附加到该行。 不幸的是,我在这里一无所知,由于No symbols have been loaded for this document因此不会触发此文件上的断点。

最后, ProbeTree.xaml此代码也相关:

<TreeView.Resources>
    ... many tags here ...
    <DataTemplate DataType="{x:Type xs:VMReading}">
        <StackPanel Orientation="Horizontal" DataContext="{Binding}"  PreviewMouseLeftButtonDown="StackPanel_PreviewMouseLeftButtonDown">
            <Label Content="{Binding Name}"></Label>
        </StackPanel>
    </DataTemplate>
</TreeView.Resources>

知道我如何实现目标吗?

“名称”文本是可单击的

尝试在堆栈面板上进行输入绑定:

<StackPanel>    
    <StackPanel.InputBindings>
        <MouseBinding MouseAction="LeftClick" Command="{Binding MyCommand}" />
    </StackPanel.InputBindings>
</StackPanel

MyCommand在视图模型中定义为System.Windows.Input.ICommand。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM