Wykorzystuję narzędzie, aby pokazać więcej szczegółów dla każdego wiersza w siatce. Szczegóły są wyświetlane jako kolumny siatki wewnątrz podpowiedzi, ale nie jestem w stanie zmienić szerokości narzędzi, aby pokazać je wszystkie.

Próbowałem zmienić szerokość narzędzia, minwidth, właściwości maxwidth, a nawet wewnętrznej szerokości siatki; Ale podpowiedź zawsze pozostaje tym samym rozmiarem.

.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>
1
Tiresia 15 luty 2017, 19:09

2 odpowiedzi

Najlepsza odpowiedź

Rozwiązanie było właśnie: Styl musi być stosowany do obiektu podpowiedzi .

Bezpośrednio przypisywałem kontrolę użytkownika jako narzędziemervice.tooltipproperty, a następnie próbowałem edytować styl kontroli użytkownika.

Definiowanie obiektu podpowiedzi z żądanym stylem i przypisanie mojej kontroli użytkownika jako jego treści, zrobił sztuczkę.

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);
1
Tiresia 20 luty 2017, 18:48

MaxWidth {X1}} jest domyślnie 320 zgodnie z Style i szablony narzędzi. Ponieważ styl {x2}} nie otwiera właściwości MaxWidth do ustawienia, że może to zabrać, jeśli bezpośrednio ustawisz MaxWidth właściwość dla ToolTip, tylko właściwości, takie jak {{} X6}}, {x7}}, Padding i tak dalej można ustawić bezpośrednio. Więc może być konieczne zaktualizowanie MaxWidth dla {{x10}}, zmieniając domyślny styl dla {{x11}} w następujący sposób:

 <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>
2
marc_s 27 marzec 2017, 19:21