[英]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.