Настройка подсказки равным содержанием - PullRequest
2 голосов
/ 29 июля 2010

Я пытаюсь установить всплывающую подсказку ячейки сетки данных равной тексту внутри TextBlock в этой ячейке.Пока что у меня есть следующее:

<Style x:Key="CellStyle" TargetType="{x:Type DataGridCell}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="DataGridCell">
                    <Grid>                         
                        <TextBlock Margin="2" VerticalAlignment="Center" 
                                HorizontalAlignment="Left"  TextWrapping="Wrap" >
                            <ContentPresenter Content="{TemplateBinding Property=ContentControl.Content}" />
                            <TextBlock.ToolTip>
                                <ContentPresenter Content="{TemplateBinding Property=ContentControl.Content}" />
                            </TextBlock.ToolTip>
                        </TextBlock>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>            
    </Style>

Однако, это очень кратко показывает всплывающую подсказку, а затем содержимое в ячейке удаляется, поэтому ничего не отображается вообще.Кроме того, настройка всплывающей подсказки из-за предустановщика шаблонов является опцией, но я не уверен, что для этого необходима привязка corrent.

Ответы [ 3 ]

1 голос
/ 30 июня 2011

Мой пример здесь для простой метки, но это может быть применено к другим элементам управления.

<Label Name="lblFormName" Content="Form Elements:" FontWeight="Bold" HorizontalAlignment="Left" Width="295" >
                    <Label.ToolTip>
                        <Binding ElementName="lblFormName" Path="Content"/>
                    </Label.ToolTip>
                </Label>

Проверьте эту ссылку: http://msdn.microsoft.com/en-us/library/ms742167.aspx или эту ссылку для связки с практическими рекомендациями от MS http://msdn.microsoft.com/en-us/library/ms752039.aspx

0 голосов
/ 05 сентября 2010

Попробуйте удалить всплывающую подсказку из шаблона ControlTemplate и определить отдельный метод Setter в стиле для всплывающей подсказки.

Вот XAML, использующий ваш образец:

<Style x:Key="CellStyle" TargetType="{x:Type WpfToolkit:DataGridCell}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="WpfToolkit:DataGridCell">
        <Grid>
          <TextBlock Margin="2" VerticalAlignment="Center"  
                     HorizontalAlignment="Left"  TextWrapping="Wrap" > 
            <ContentPresenter Content="{TemplateBinding Property=ContentControl.Content}" /> 
            <!--<TextBlock.ToolTip> 
              <ContentPresenter Content="{TemplateBinding Property=ContentControl.Content}" /> 
            </TextBlock.ToolTip>-->
          </TextBlock>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
  <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text}"/>
</Style>
0 голосов
/ 30 июля 2010

Вы пробовали использовать RelativeSource?Я слышал о некоторых проблемах, связанных с TemplateBinding и RelativeSource ( WPF TemplateBinding и RelativeSource TemplatedParent ).

<ContentPresenter Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type YourAncestorType}, AncestorLevel=1},Path=Content}" />

Где "YourAncestorType" - это тип родительского элемента, который вы хотите найти.

Или вы можете попробовать тот же подход с

<ContentPresenter Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}" />

См. Также: http://www.wpfwiki.com/Default.aspx?Page=WPF%20Q5.3&AspxAutoDetectCookieSupport=1

...