[英]UWP - Change Tooltip height/width
我利用工具提示为网格中的每一行显示更多详细信息。 详细信息在工具提示中显示为网格列,但是我无法更改工具提示的宽度以全部显示。
我尝试更改工具提示的Width,MinWidth,MaxWidth属性,甚至是内部网格宽度; 但是工具提示始终保持相同大小。
.CS
Rectangle rect = new Rectangle();
rect.Opacity = 0.3;
rect.SetValue(Grid.RowProperty, r);
rect.SetValue(Grid.ColumnSpanProperty, 7);
rect.Fill = new SolidColorBrush(Colors.Azure);
rect.Margin = new Thickness(2);
MyTooltip mt = new MyTooltip(par);
mt.Style = Application.Current.Resources["LargeToolTipStyle"] as Style;
rect.SetValue(ToolTipService.ToolTipProperty, mt);
样式文件
<Style x:Key="LargeToolTipStyle" TargetType="local:MyTooltip">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<ContentPresenter
x:Name="LayoutRoot"
MaxWidth="800"
Padding="{TemplateBinding Padding}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
ContentTransitions="{TemplateBinding ContentTransitions}"
TextWrapping="Wrap">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="OpenStates">
<VisualState x:Name="Closed">
<Storyboard>
<FadeOutThemeAnimation TargetName="LayoutRoot" />
</Storyboard>
</VisualState>
<VisualState x:Name="Opened">
<Storyboard>
<FadeInThemeAnimation TargetName="LayoutRoot" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
MYTOOLTIP.XAML
<UserControl
x:Class="Client.MyTooltip"
...
d:DesignHeight="300"
d:DesignWidth="400">
<Grid Name="TooltipGrid" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Name="TooltipHeaderTBL" Text="LEFT HEADER"
Grid.Column="0">
</TextBlock>
<TextBlock Name="TooltipHeaderTBR" Text="RIGHT HEADER"
Grid.Column="1">
</TextBlock>
<TextBlock Name="TooltipContentTBL" Text="Content sample (L)"
Grid.Row="1"
Grid.Column="0"></TextBlock>
<TextBlock Name="TooltipContentTBR" Text="Content sample (R)"
Grid.Row="1"
Grid.Column="1"></TextBlock>
</Grid>
</UserControl>
根据工具提示样式和模板 ,默认情况下, ToolTip
的MaxWidth
为320。 由于ToolTip
样式不会打开MaxWidth
属性进行设置,因此,如果直接为ToolTip
设置MaxWidth
属性,则它可能不会MaxWidth
,因此只能直接设置诸如Foreground
, Background
, Padding
等属性。 因此,您可能需要通过如下更改ToolTip
的默认样式来更新ContentPresenter
的MaxWidth
:
<Rectangle
Grid.Row="0"
Grid.ColumnSpan="3"
Fill="Azure"
Opacity="0.3">
<ToolTipService.ToolTip>
<ToolTip>
<ToolTip.Style>
<Style TargetType="ToolTip">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<ContentPresenter
x:Name="LayoutRoot"
MaxWidth="2000"
Padding="{TemplateBinding Padding}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
ContentTransitions="{TemplateBinding ContentTransitions}"
TextWrapping="Wrap">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="OpenStates">
<VisualState x:Name="Closed">
<Storyboard>
<FadeOutThemeAnimation TargetName="LayoutRoot" />
</Storyboard>
</VisualState>
<VisualState x:Name="Opened">
<Storyboard>
<FadeInThemeAnimation TargetName="LayoutRoot" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ToolTip.Style>
<Grid>
<Grid.RowDefinitions>
...
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
...
</Grid.ColumnDefinitions>
<TextBlock
Grid.Row="0"
Grid.Column="0"
Text="testtriptext on column 0testtriptext on column 0testtriptext on column 0testtriptext on column 0" />
<TextBlock
Grid.Row="1"
Grid.Column="1"
Text="testtriptext on column 1" />
<TextBlock
Grid.Row="2"
Grid.Column="2"
Text="testtriptext on column 2" />
</Grid>
</ToolTip>
</ToolTipService.ToolTip>
</Rectangle>
解决方案就在那里: 必须将样式应用于Tooltip对象 。
我直接将用户控件分配为ToolTipService.ToolTipProperty,然后尝试编辑用户控件样式。
用所需的样式定义ToolTip对象,然后将我的用户控件分配为其内容,就可以解决问题。
Rectangle rect = new Rectangle();
rect.Opacity = 0.3;
rect.SetValue(Grid.RowProperty, r);
rect.SetValue(Grid.ColumnSpanProperty, 7);
rect.Fill = new SolidColorBrush(Colors.Azure);
rect.Margin = new Thickness(2);
MyTooltip mt = new MyTooltip(par);
ToolTip t = new ToolTip();
t.Content = mt;
t.Style = Application.Current.Resources["LargeToolTipStyle"] as Style;
rect.SetValue(ToolTipService.ToolTipProperty, t);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.