我正在利用工具提示来显示网格中每一行的更多详细信息。 细节在工具提示中显示为网格列,但我无法更改工具提示宽度以显示所有内容。
我尝试更改工具提示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);
STYLES.XAML
<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>
答案 0 :(得分:1)
根据ToolTip styles and templates,MaxWidth
的{{1}}默认为320。由于ToolTip
样式没有打开ToolTip
属性进行设置,如果您直接为MaxWidth
设置MaxWidth
属性,则可能不会产生任何影响,因此只有ToolTip
,Foreground
,Background
等可以直接设置。因此,您可能需要更改Padding
的{{1}},方法是更改MaxWidth
的默认样式,如下所示:
ContentPresenter
答案 1 :(得分:1)
解决方案就在那里:必须将样式应用于工具提示对象。
我直接将用户控件指定为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);