2017-02-15 8 views
0

Ich nutze einen Tooltip, um mehr Details für jede Zeile in einem Raster anzuzeigen. Details werden als Rasterspalten innerhalb der QuickInfo angezeigt, aber ich kann die Tooltip-Breite nicht ändern, um sie alle anzuzeigen.UWP - Tooltip-Höhe/-breite ändern

Ich habe versucht, die Tooltip-Breite, MinWidth, MaxWidth Eigenschaften und sogar die interne Rasterweite zu ändern; aber der Tooltip bleibt immer gleich groß.

.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

Bitte geben Sie Ihren XAML an, um besser zu verstehen, wie Sie dies versucht haben. Lesen Sie, wie Sie mit [mcve] Fragen stellen können. – AVK

+0

Könnten Sie bitte erläutern, warum dieser Beitrag nach dem Hinzufügen neuer Details abgelehnt wurde? – Tiresia

Antwort

1

Die Lösung war gerade da: der Stil zu einem Tooltip Objekt angewendet werden müssen.

Ich habe das Benutzersteuerelement direkt als ToolTipService.ToolTipProperty zugewiesen und dann versucht, den Benutzersteuerungsstil zu bearbeiten.

Das Definieren eines ToolTip-Objekts mit dem gewünschten Stil und das Zuweisen meines Benutzersteuerelements als Inhalt haben den Zweck erfüllt.

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

Die MaxWidth von ToolTip ist 320 bei Standard gemäß der ToolTip styles and templates. Da der ToolTip Stil nicht die MaxWidth Eigenschaft für die Einstellung öffnet, dass es keine Auswirkungen haben kann, wenn Sie direkt MaxWidth Eigenschaft für ToolTip Eigenschaft setzen, können nur Eigenschaften wie Foreground, Background, Padding und so weiter direkt festlegen. So müssen Sie die MaxWidth für die ContentPresenter durch Änderung der Standardstil für die ToolTip wie folgt aktualisieren:

<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> 
+0

Oben bearbeitet: Ich versuche das programmatisch zu erreichen. – Tiresia

+0

Das ist der richtige Hinweis, danke @Sunteen Wu! Ich musste nur die gleichen Ergebnisse programmatisch bekommen. – Tiresia

Verwandte Themen