2017-11-07 1 views
1

In der ersten Spalte auf meinem Datenraster muss ich einen Header und ein Bild anzeigen. Außerdem muss das Bild einen Tooltip mit dynamischem Text enthalten. Ich habe eine HeaderTemplate wie im folgenden Code gezeigt verwendet, um sowohl den Text als auch das Bild anzuzeigen. Aber ich habe Probleme, die ToolTipMessage an den TextBlock zu binden. Ich habe auch ein ProxyElement verwendet, aber es funktioniert immer noch nicht. Jede Hilfe würde sehr geschätzt werden.Binding Tooltip Text in einem DataGrid HeaderTemplate

<Grid> 
<Grid.Resources> 
    <FrameworkElement 
     x:key"DataContextProxyElement" 
     DataContext={Binding} 
     Visibility=Collapsed/> 
</Grid.Resources> 
<Border 
    Grid.Row="0" 
    Grid.Column="0" 
    Style="{StaticResource BorderStyle}" 
    Visibility="{Binding ShowBorder, Converter={StaticResource BoolToVisibilityConverter}}"> 
    <DataGrid 
     ItemsSource="{Binding GridData}" 
     Style="{StaticResource DataGridStyle}"> 
     <DataGrid.Columns> 
      <DataGridTextColumn 
       Width="*" 
       Binding="{Binding Term}" 
       ElementStyle="{StaticResource Wrap}" 
       EditingElementStyle="{StaticResource EditWrap}"> 
       <DataGridTextColumn.HeaderTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="Other synonyms"/> 
          <Image Source="{StaticResource InfoIcon}"> 
           <Image.ToolTip> 
            <ToolTip Style="{StaticResource PowerUserToolTip}"> 
             <TextBlock Text={Binding DataContext.ToolTipMessage, Source={StaticResource DataContextProxyElement}}/> 
            </ToolTip> 
           </Image.ToolTip> 
          </Image> 
         </StackPanel> 
        </DataTemplate> 
       </DataGridTextColumn.HeaderTemplate> 
      </DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 
</Border> 

+0

Wo ist die ToolTipMessage Eigenschaft definiert? – mm8

+0

ToolTipMessage ist in meinem ViewModel definiert. Entschuldigung, ich habe vergessen, es auf dem ursprünglichen Beitrag zu erwähnen – KermitDFrog

Antwort

1

Try this:

<Image Source="{StaticResource InfoIcon}" Tag="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}}"> 
    <Image.ToolTip> 
     <ToolTip Style="{StaticResource PowerUserToolTip}"> 
      <TextBlock Text="{Binding PlacementTarget.Tag.DataContext.ToolTipMessage, RelativeSource={RelativeSource AncestorType=ToolTip}}"/> 
     </ToolTip> 
    </Image.ToolTip> 
</Image> 
+0

Danke. Deine Antwort funktioniert perfekt. Danke mm8 – KermitDFrog

Verwandte Themen