WPF布局变换: ToolTip size not modified

标签 wpf window tooltip

我在 Windows 的顶级“网格”控件中使用 LayoutTransform,来执行 ScaleTransform 并在 UI 上实现缩放系数(类似于浏览器的操作方式)。

一切正常,但不知何故,工具提示以未调整的尺寸显示。

是否有办法枚举窗口中的所有工具提示并从 .cs 文件调整其大小? ...或者有其他方法来处理这个问题吗?

最佳答案

工具提示不受影响的原因是工具提示是弹出窗口,不属于窗口可视化树的一部分。因此,对窗口组件执行的任何布局转换都不会传递到工具提示。如果您主要有通用工具提示(基本上是文本),则可以在窗口资源中创建非键控样式,WPF 会自动将其应用到所有工具提示:

   <Window.Resources>
        <Style TargetType="ToolTip">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToolTip}">
                        <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                            <Border.LayoutTransform>
                                <ScaleTransform ScaleX="{Binding ScaleFactor}"></ScaleTransform>
                            </Border.LayoutTransform>
                            <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <StackPanel x:Name="MainPanel">
        <StackPanel.LayoutTransform>
            <ScaleTransform ScaleX="{Binding ScaleFactor}" ScaleY="{Binding ScaleFactor}"></ScaleTransform>
        </StackPanel.LayoutTransform>
        <TextBlock ToolTip="blah">haha!</TextBlock>
    </StackPanel>

在示例中,我将 ScaleX/Y 作为工具提示绑定(bind)到窗口 View 模型上的 ScaleFactor 属性。我相信你可以通过这种方式保持动态。

关于WPF布局变换: ToolTip size not modified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38001665/

相关文章:

python - 如何根据每个组的大小设置滚动窗口大小?

.net - 启动时完全隐藏WPF窗口吗?

css - 如何防止 Kendo UI 饼图工具提示在父 Div 之外绘制?

css 工具提示链接不起作用

wpf - 寻找股票图表组件

c# - 如何在 View WPF 中创建 View

wpf - 为 WPF 编写特殊的屏蔽文本框

c# - 如何正确过滤鼠标事件可能导致的不同操作?

java - 不同操作系统的外观设置

javascript - 图片 Alt 和标题属性