基本操作 > セル > セルのユーザーデータをツールチップに表示 |
ユーザーがセルデータをツールチップに表示する場合は、WPF版の標準の TooltipService を使用してグリッドで使用できるツールチップを作成できます。そして、カスタムセルファクトリを使用することで、ツールチップをセルに付けて表示できます。
たとえば、次の例をご覧ください。
Visual Basic |
コードのコピー
|
---|---|
Partial Public Class MainWindow Inherits Window Public Sub New() InitializeComponent() _grid.CellFactory = New ToolTipCellFactory() Dim list As New List(Of Customer)() For i As Integer = 0 To 49 Dim cus As Customer = New Customer cus.Name = "Customer " + i.ToString() cus.Age = 10 + i cus.Active = i Mod 3 <> 0 list.Add(cus) Next i _grid.ItemsSource = list For Each col As Column In _grid.Columns col.Tag = String.Format("tag For column'{0}'", col.ColumnName) Next End Sub ' イベントハンドラ― Private Sub _grid_PrepareCellForEdit(sender As Object, e As CellEditEventArgs) Handles _grid.PrepareCellForEdit ' 選択の外観を変更してエディタをカスタマイズします Dim b As Border = DirectCast(e.Editor, Border) Dim tb As TextBox = DirectCast(b.Child, TextBox) If tb IsNot Nothing Then tb.Background = New SolidColorBrush(Colors.Black) tb.Foreground = New SolidColorBrush(Colors.White) End If End Sub End Class |
C# |
コードのコピー
|
---|---|
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); _grid.CellFactory = new ToolTipCellFactory(); var list = new List<Customer>(); for (int i = 0; i < 50; i++) { list.Add(new Customer() { 名前 = "Customer " + i.ToString(), 年齢 = 10 + i, アクティブ = i % 3 != 0 }); } _grid.ItemsSource = list; foreach (Column col in _grid.Columns) { col.Tag = string.Format("'{0}'列のタグ", col.ColumnName); } // イベントハンドラ― _grid.PrepareCellForEdit += _grid_PrepareCellForEdit; } // 選択の外観を変更してエディタをカスタマイズします void _grid_PrepareCellForEdit(object sender, CellEditEventArgs e) { var b = e.Editor as Border; var tb = b.Child as TextBox; if (tb != null) { tb.Background = new SolidColorBrush(Colors.Black); tb.Foreground = new SolidColorBrush(Colors.White); } } } |
セルにツールチップを追加するカスタムセルファクトリは、次のようになります。
Visual Basic |
コードのコピー
|
---|---|
Public Class ToolTipCellFactory Inherits CellFactory Public Overrides Sub CreateCellContent(ByVal grid As C1FlexGrid, ByVal bdr As Border, ByVal rng As CellRange) MyBase.CreateCellContent(grid, bdr, rng) Dim tip = String.Format("行: {0} 列: {1}" & vbCrLf & "内容: {2}" & vbCrLf & "列タグ: {3}", rng.Row, rng.Column, grid(rng.Row, rng.Column), grid.Columns(rng.Column).Tag) ToolTipService.SetToolTip(bdr, tip) End Sub End Class |
C# |
コードのコピー
|
---|---|
public class ToolTipCellFactory : CellFactory { public override void CreateCellContent(C1FlexGrid grid, Border bdr, CellRange rng) { // コンテンツを作成します base.CreateCellContent(grid, bdr, rng); // ツールチップを追加します var tip = string.Format("行: {0} 列: {1}\r\n内容: {2}\r\n列タグ: {3}", rng.Row, rng.Column, grid[rng.Row, rng.Column], grid.Columns[rng.Column].Tag); ToolTipService.SetToolTip(bdr, tip); } } |