C# WPF选项卡控制,触摸不工作
我有一个选项卡控件,只对鼠标单击更改的选项卡作出响应 尽管有Surface SDK,我是否需要手动在事件处理程序中为选项卡控件编写代码?或者这里有更好的控制处理器吗 我觉得这样做完全是适得其反的,以至于有了SDK。特别是因为我计划在我的程序中有很多不同的、独特的选项卡,不想在按钮着陆功能中使用嵌套的ifs单独处理每个选项卡。我已经有了自定义的按钮,这些按钮都有按钮触地设置,添加单独的选项卡控件将是一件令人头痛的事情,而且代码也非常混乱 我试着寻找,但空手而归,这让我觉得也许我遗漏了什么,应该有用。是因为我有一个预定义的按钮和接地功能吗C# WPF选项卡控制,触摸不工作,c#,wpf,navigation,pixelsense,C#,Wpf,Navigation,Pixelsense,我有一个选项卡控件,只对鼠标单击更改的选项卡作出响应 尽管有Surface SDK,我是否需要手动在事件处理程序中为选项卡控件编写代码?或者这里有更好的控制处理器吗 我觉得这样做完全是适得其反的,以至于有了SDK。特别是因为我计划在我的程序中有很多不同的、独特的选项卡,不想在按钮着陆功能中使用嵌套的ifs单独处理每个选项卡。我已经有了自定义的按钮,这些按钮都有按钮触地设置,添加单独的选项卡控件将是一件令人头痛的事情,而且代码也非常混乱 我试着寻找,但空手而归,这让我觉得也许我遗漏了什么,应该有用
private void TabItem_TouchDown(object sender, TouchEventArgs e)
{
TabItem tab = sender as TabItem;
TabControl control = tab.Parent as TabControl;
control.SelectedItem = tab;
e.Handled = true;
}
XAML
基于上述答案,但针对每次触摸的滚动进行了增强。在应用程序中使用ClassHandler干净地处理此问题(我使用AutoFac的iStatable在构建容器期间自动注册):
也许你的触摸屏很旧,而且“模仿”了鼠标?我有一个WPF应用程序和一个工作正常的触摸屏。也许你的一些“乱七八糟的代码”正在禁用某些东西。几乎!如果当前选项卡已经正确,请确保未将e.Handled设置为true。否则,每次触摸滚动将不再有效
<TabItem x:Name="hccontactTab" Header="Phone" TouchDown="TabItem_TouchDown">
using System.Windows;
using System.Windows.Controls;
using Autofac;
namespace ...ClassHandlers
{
public class TabItemTouchClassHandler : IStartable
{
public void Start()
{
Register();
}
public void Register()
{
EventManager.RegisterClassHandler(typeof(TabItem), UIElement.TouchDownEvent, new RoutedEventHandler(OnTabItemTouchDown));
}
//must be static! otherwise memory leaks!
private static void OnTabItemTouchDown(object ender, routedEventArgs e)
{
var tab = sender as TabItem;
var control = tab?.Parent as TabControl;
if (control != null && !Equals(tab, control.SelectedItem))
{
control.SelectedItem = tab;
e.Handled = true;
}
}
}
}