588748 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
2024.03.07
XML
カテゴリ:C#.NET


DataGridのセルにツールチップを表示し、その内容を動的に変更する方法を示します。


csharp

Copy code

using System.Windows;

using System.Windows.Controls;

using System.Windows.Controls.Primitives;


public class DataGridToolTipBehavior

{

    public static readonly DependencyProperty ToolTipProperty =

        DependencyProperty.RegisterAttached("ToolTip", typeof(string), typeof(DataGridToolTipBehavior), new FrameworkPropertyMetadata(null, OnToolTipChanged));


    public static string GetToolTip(DependencyObject obj)

    {

        return (string)obj.GetValue(ToolTipProperty);

    }


    public static void SetToolTip(DependencyObject obj, string value)

    {

        obj.SetValue(ToolTipProperty, value);

    }


    private static void OnToolTipChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

    {

        if (d is DataGridCell cell)

        {

            cell.MouseEnter += Cell_MouseEnter;

            cell.MouseLeave += Cell_MouseLeave;

        }

    }


    private static void Cell_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)

    {

        if (sender is DataGridCell cell)

        {

            string toolTipContent = GetToolTip(cell);

            if (!string.IsNullOrEmpty(toolTipContent))

            {

                ToolTip toolTip = new ToolTip();

                toolTip.Content = toolTipContent;

                cell.ToolTip = toolTip;

                toolTip.IsOpen = true;

            }

        }

    }


    private static void Cell_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)

    {

        if (sender is DataGridCell cell)

        {

            cell.ToolTip = null;

        }

    }

}

このコードでは、DataGridのセルに表示されるツールチップの内容を動的に変更できます。使い方は、DataGridのセルにToolTipプロパティを設定し、その値を動的に変更するだけです。以下はXAMLでの使用例です。


xml

Copy code

<DataGrid>

    <DataGrid.Columns>

        <DataGridTextColumn Header="Name" Binding="{Binding Name}">

            <DataGridTextColumn.CellStyle>

                <Style TargetType="DataGridCell">

                    <Setter Property="local:DataGridToolTipBehavior.ToolTip" Value="{Binding AdditionalInfo}" />

                </Style>

            </DataGridTextColumn.CellStyle>

        </DataGridTextColumn>

    </DataGrid.Columns>

</DataGrid>

このようにすることで、DataGridのセルにマウスを重ねると、セルに設定されたToolTipプロパティの値が表示されます。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.03.07 04:29:39



© Rakuten Group, Inc.