12

我想自定义我的 DataGrid 以在所选行中显示工具提示,请参阅下面的模型图像以更好地了解我想要实现的目标。

就目前而言- 显示单个选定的行: 在此处输入图像描述

我想要的- 显示选择的同一行,现在带有工具提示:

在此处输入图像描述

  • 我的 DataGrid 使用绑定到 ViewModel。
  • 使用适用于 Windows 桌面的 WPF 和 C#。

我真的不知道如何实现这一点,所以我完全愿意接受任何建议。

4

3 回答 3

25

我使用DataGrid.RowStyle来设置工具提示。

我的绑定对象有一个ToolTipText属性,其中包含ToolTip.

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow">
        <Setter Property="ToolTip">
            <Setter.Value>
                <TextBlock Text="{Binding ToolTipText}" />
            </Setter.Value>
        </Setter>
    </Style>
</DataGrid.RowStyle>
于 2015-08-14T09:40:07.093 回答
16

You can use RowDetailsTemplate.

Here is sample code:

<DataGrid Name="grid" AutoGenerateColumns="False">
    <DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <TextBlock Background="Orange" Text="{Binding MoreInfo}" TextWrapping="Wrap"
                       HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
        </DataTemplate>
    </DataGrid.RowDetailsTemplate>
    <DataGrid.Columns>
        <DataGridTextColumn Header="ID" Binding="{Binding ID}" />
        <DataGridTextColumn Header="ID" Binding="{Binding Name}" />
        <DataGridTextColumn Header="ID" Binding="{Binding Surname}" />
    </DataGrid.Columns>
</DataGrid>
于 2012-11-21T15:26:40.050 回答
0

在数据网格中的一行上添加工具提示的另一种简单方法如下。

使用LodingRow事件并添加您的工具提示,如下所示:

private void grdItemlogs_LoadingRow(object sender, DataGridRowEventArgs e)
    {
        if (e.Row != null)
        {
            string toolTipText = "Your Tooltip string content"
            e.Row.ToolTip = toolTipText;

        }
    }
于 2017-04-27T10:14:26.467 回答