我在窗口‘顶层’网格‘控件中使用LayoutTransform来执行ScaleTransform并在UI上实现缩放因子(类似于浏览器的操作)。
事情运行良好,但不知怎的工具提示显示与未经调整的大小。
例如,如果有一种方法可以枚举窗口中的所有toolTips并从.cs文件调整它们的大小?...or还有其他方法来处理这个问题吗?
发布于 2016-06-23 21:58:09
工具提示不受影响的原因是因为工具提示不是窗口视觉树的一部分。因此,在窗口组件集中执行的任何布局转换都不会传递到工具提示。如果您有大多数通用工具提示(基本上是文本),您可以在窗口资源中创建一个无键样式,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表示工具提示绑定到窗口视图模型上的ScaleFactor属性。我相信你可以这样保持它的动感。
发布于 2016-06-24 01:28:44
就像Rowbear提到的,工具提示是弹出窗口(它们是窗口),所以它们有自己的可视树。但是,据我所知,最大的问题是,这些弹出窗口也不能继承来自产卵控制的DataContext。
<Window.Resources>
<Style TargetType="ToolTip">
<Setter Property="LayoutTransform" Value="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget.LayoutTransform}" />
</Style>
</Window.Resources>https://stackoverflow.com/questions/38001665
复制相似问题