【问题标题】:WPF Tab Control with Touch Not Working触摸不工作的 WPF 选项卡控件
【发布时间】:2013-07-22 17:30:55
【问题描述】:

我有一个选项卡控件,它只响应通过鼠标单击更改选项卡。

尽管有 Surface SDK,我是否需要在选项卡控件的事件处理程序中手动编码?或者我可以在这里使用更好的控制处理程序吗?

我觉得这与拥有 SDK 完全相反。特别是因为我计划在我的程序中有很多不同的、独特的选项卡,并且不想在 button_TouchDown 函数中使用嵌套的 if 单独处理每个选项卡。我已经有自定义按钮,这些按钮设置了 button_TouchDown,添加单独的选项卡控件会让人头疼,而且代码一团糟。

我尝试搜索但空手而归,这让我觉得也许我错过了一些东西,它应该可以工作。是不是因为我有一个预定义的 button_TouchDown 函数?

【问题讨论】:

  • 也许您的触摸屏很旧并且“模拟”鼠标?我有一个 WPF 应用程序和一个可以正常工作的触摸屏。也许您的一些“代码混乱”正在禁用某些东西。

标签: c# wpf navigation pixelsense


【解决方案1】:
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

 <TabItem x:Name="hccontactTab" Header="Phone" TouchDown="TabItem_TouchDown">

【讨论】:

  • 几乎!如果当前选项卡已经正确,请确保您没有将 e.Handled 设置为 true。否则每次触摸滚动将不再起作用
【解决方案2】:

基于上述答案,但已增强以考虑每次触摸的滚动。使用 ClassHandler 在您的应用程序中干净地处理此问题(我使用 AutoFac 的 IStartable 在构建容器期间自动注册它):

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;
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多