0

ViewModel にバインドされたテレリック グリッド コントロールがあります。プロパティの 1 つに、グリッドに収まりにくい比較的長い文字列が含まれている場合があります。したがって、セルを TextTrimming="WordEllipsis" を使用して TextBlock として表示し、ToolTip コントロールに全文を表示します。

<telerik:GridViewDataColumn UniqueName="TaskDetails" DataMemberBinding="{Binding TaskDetails}" Header="Task details"  IsReadOnly="True" Width="*" >
    <telerik:GridViewDataColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding TaskDetails}" ToolTipService.ShowDuration="300000" TextTrimming="WordEllipsis" Height="30">
                <TextBlock.ToolTip>
                    <ToolTip>
                        <TextBlock Width="350" TextWrapping="WrapWithOverflow" Text="{Binding TaskDetails}" />
                    </ToolTip>
                </TextBlock.ToolTip>
            </TextBlock>
        </DataTemplate>
    </telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>

ユーザーがグリッドを並べ替えるまで、すべてが正常に機能します。並べ替えが適用された場合、TextBlock には正しいデータが表示されますが、ツールヒントには以前にその位置にあったセルのテキストが表示されます。ソートされていないようです。

これを修正する方法はありますか?

4

2 に答える 2

0

グリッドは異なりますが、同様の問題がありました。データ テンプレートにはユーザー コントロールが含まれており、内部には次のものがありました。

public WebSnapshotCell()
{
  InitializeComponent();

  this.ToolTipOpening += new ToolTipEventHandler(WebSnapshotCell_ToolTipOpening);
}

void WebSnapshotCell_ToolTipOpening(object sender, ToolTipEventArgs e)
{
  // Refresh tooltip's data context
  ToolTip tooltip = this.ToolTip as ToolTip;
  if (tooltip != null)
  {
    tooltip.DataContext = this.DataContext;
  }
}

あなたの場合、TextBox を UserControl に配置するか、別の方法で ToolTipOpening イベントを処理するか、ToolTip の DataContext を TextBlock の DataContext に明示的にバインドすることができます。

于 2012-09-26T20:04:07.697 に答える