c# - WPF - 使用 DisplayMemberBinding 向 GridViewColumn 添加工具提示

标签 c# wpf xaml

我在 GridViewColumn 中有一个 TextBlock,它需要一个 DisplayMemberBindingTextBlock 完全不明原因,因为 DisplayMemberBinding 优先于 CellTemplate。但是,Textblock 有一个 ToolTip,我希望显示它是特定于列本身的。我能够将大多数样式设置移到 CellTemplate 之外,因为它们对所有列都是通用的,但是 ToolTip 不能移到外面,因为它需要绑定(bind)并且对每个列都是唯一的专栏。

这是其中一列。由于 DisplayMemberBinding 优先,GridViewColumn.CellTemplate 标记中的所有内容都是可移动的。

            <GridViewColumn Header="Templates"
                            Width="200" 
                            DisplayMemberBinding="{Binding Path=Name}>
              <GridViewColumn.CellTemplate> 
                <DataTemplate DataType="{x:Type request:ModelDocument}">
                  <TextBlock ToolTip="{Binding Name}"/>
                </DataTemplate>
              </GridViewColumn.CellTemplate>
            </GridViewColumn>

我对其他 Style 属性的处理方式如下。这是在 GridView 之前完成的(GridViewListView 的子级):

        <ListView.Resources>
          <Style TargetType="TextBlock">
            <Setter Property="TextTrimming" Value="CharacterEllipsis" />
            <Setter Property="TextWrapping" Value="NoWrap"/>
            <Setter Property="FontFamily" Value="Segue UI Light" />
            <Setter Property="FontSize" Value="13" />
          </Style>
        </ListView.Resources>

如何在不删除 DisplayMemberBinding 的情况下向每一列添加唯一的 ToolTip

最佳答案

正如@icebat 在评论中已经建议的那样,DataGrid 更适合这种情况,为了澄清这里有一个简单的演示实现:

   <DataGrid ItemsSource="{Binding Collection}" AutoGenerateColumns="False">
    <DataGrid.Resources>
        <Style TargetType="TextBlock" x:Key="TbStyle">
            <Setter Property="TextTrimming" Value="CharacterEllipsis" />
            <Setter Property="TextWrapping" Value="NoWrap"/>
            <Setter Property="FontFamily" Value="Segue UI Light" />
            <Setter Property="FontSize" Value="13" />
        </Style>

    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridTemplateColumn  Header="Templates" SortMemberPath="Name"
                         Width="200"  >
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate >
                    <TextBlock Style="{StaticResource TbStyle}" ToolTip="{Binding Name}" Text="{Binding Name}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>

        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

关于c# - WPF - 使用 DisplayMemberBinding 向 GridViewColumn 添加工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58818571/

相关文章:

c# - 将图像源绑定(bind)到页面

c# - Listview 中的 TextBox - 在 TextBox TextChanged 上获取 ListViewItem

c# - TaskCompletionSource 是否保证等待代码将在调用 TCS.TrySetResult 的线程上恢复?

c# - WithDegreeOfParallelism(N>CPU 数量)

WPF 应用程序有两个 UI 线程,每个线程都在自己的监视器上运行?

c# - 在滚动条上的 WPF TreeView 中拖放

c# - Linq to sql查询: how to prevent duplication of code

c# - 在 MVC 应用程序中使用 await Task<T> async 挂起 Controller

c# - WPF DataGrid EditItem 异常

C#,WPF 绑定(bind),MVVM,INotifyPropertyChanged,尝试绑定(bind)实例属性但没有成功