Wpf 网格排序时工具提示绑定混乱
我将telerik网格控件绑定到ViewModel。其中一个属性可以包含相对较长的字符串,很难放入网格。因此,我使用TextTrimp=“WordEllipsis”将单元格显示为TextBlock,并在工具提示控件中显示全文:Wpf 网格排序时工具提示绑定混乱,wpf,data-binding,binding,tooltip,telerik-grid,Wpf,Data Binding,Binding,Tooltip,Telerik Grid,我将telerik网格控件绑定到ViewModel。其中一个属性可以包含相对较长的字符串,很难放入网格。因此,我使用TextTrimp=“WordEllipsis”将单元格显示为TextBlock,并在工具提示控件中显示全文: <telerik:GridViewDataColumn UniqueName="TaskDetails" DataMemberBinding="{Binding TaskDetails}" Header="Task details" IsReadOnly="Tru
<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将显示正确的数据,但工具提示将显示以前位于该位置的单元格的文本。好像它没有被分类
知道如何解决这个问题吗?我们遇到了类似的问题,尽管网格不同。 datatemplate包含一个用户控件,其中包含以下内容:
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事件,或者显式地将工具提示的DataContext绑定到TextBlock的DataContext中。我在网格中使用了自定义控件:
<telerik:GridViewDataColumn UniqueName="TaskDetails"
DataMemberBinding="{Binding TaskDetails}"
Header="Task details"
Width="500"
IsReadOnly="True">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<cc:LongTextBlock Text="{Binding TaskDetails}" ToolTipShowDuration="300000" VerticalAlignment="Center" ToolTipWidth="350" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
以及控件的样式:
<Style TargetType="{x:Type local:LongTextBlock}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:LongTextBlock}">
<TextBlock Text="{TemplateBinding Text}" TextTrimming="WordEllipsis" ToolTipService.ShowDuration="{TemplateBinding ToolTipShowDuration}">
<TextBlock.ToolTip>
<ToolTip>
<TextBlock Width="{TemplateBinding ToolTipWidth}" TextWrapping="WrapWithOverflow" Text="{TemplateBinding Text}" />
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type local:LongTextBlock}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:LongTextBlock}">
<TextBlock Text="{TemplateBinding Text}" TextTrimming="WordEllipsis" ToolTipService.ShowDuration="{TemplateBinding ToolTipShowDuration}">
<TextBlock.ToolTip>
<ToolTip>
<TextBlock Width="{TemplateBinding ToolTipWidth}" TextWrapping="WrapWithOverflow" Text="{TemplateBinding Text}" />
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>