首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF:工具提示布局在触摸屏上的行为不同

WPF:工具提示布局在触摸屏上的行为不同
EN

Stack Overflow用户
提问于 2015-07-15 09:26:56
回答 2查看 1.2K关注 0票数 2

我有一个带有工具提示的ToggleButton:

代码语言:javascript
复制
            <ToggleButton Height="32" Width="32">
                <Image Width="16" Height="16" Source="{someImage} />
                <ToggleButton.ToolTip>
                    <ToolTip Placement="Left" HorizontalOffset="-5">
                        <TextBlock Text="Search"/>
                    </ToolTip>
                </ToggleButton.ToolTip>
            </ToggleButton>

在我的PC (常规屏幕,Windows8.1)上,工具提示显示在我按钮的左边,这是正确的(见图)。

然而,在带有触摸屏的pc上,工具提示显示在右边(鼠标悬停时)。即使PC有两个屏幕,一个是触摸屏,另一个是普通屏幕,工具提示在两个屏幕上都显示在右边。

两台PC都运行着相同的操作系统和.Net版本。

当我将布局更改为“右”时,工具提示显示在没有触摸屏的pc上的右边,在带有触摸屏的pc上显示在左侧。

为什么不同,我能做什么,工具提示总是显示在按钮的左边?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-15 12:07:09

仍然不知道为什么原始代码不能正确工作,但我找到了一个修复/解决方案:

我已经将Placement设置为Custom,并实现了ToolTipOpening事件处理程序。在这里,我使用CustomPopupPlacementCallback委托手动设置工具提示的位置:

XAML:

代码语言:javascript
复制
            <ToggleButton Height="32" Width="32" ToolTipOpening="Button_OnToolTipOpening">
                <Image Width="16" Height="16" Source="{someImage} />
                <ToggleButton.ToolTip>
                    <ToolTip Placement="Left" HorizontalOffset="-5">
                        <TextBlock Text="Search"/>
                    </ToolTip>
                </ToggleButton.ToolTip>
            </ToggleButton>

C#:

代码语言:javascript
复制
    private void Button_OnToolTipOpening(object sender, ToolTipEventArgs e)
    {
        var button = sender as ToggleButton;
        if (button == null) return;
        var toolTip = button.ToolTip as ToolTip;
        if (toolTip != null)
        {
            toolTip.PlacementTarget = button;
            toolTip.Placement = PlacementMode.Custom;
            toolTip.CustomPopupPlacementCallback = delegate
            {
                double offsetY = (button.Height - toolTip.ActualHeight) / 2;
                double offsetX = -toolTip.ActualWidth - 5;

                return new CustomPopupPlacement[] { new CustomPopupPlacement(new Point(offsetX, offsetY), PopupPrimaryAxis.Horizontal) };
            };
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2015-07-15 09:42:23

你可以试试这个。我刚刚在那边写了重要的东西..。可能有用..。

代码语言:javascript
复制
 <ToggleButton Height="32" Width="32">
            <Image Width="16" Height="16"Source="{someImage} />
            <ToggleButton.ToolTip>
                <ToolTip Placement="Left !important" HorizontalOffset="-5">
                    <TextBlock Text="My Tooltip"/>
                </ToolTip>
            </ToggleButton.ToolTip>
        </ToggleButton>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31426491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档