غير قادر على تعيين تلميح أدوات DataGridColumn
-
20-09-2019 - |
سؤال
حاولت ما يلي:
<tk:DataGridTextColumn
Header="Item"
Binding="{Binding Item.Title}"
ToolTipService.ToolTip="{Binding Item.Description}" />
وأنا لا أرى أي نصيحة أداة.
أيه أفكار؟ هل تم تنفيذه حتى؟
المحلول
هذا يعمل بالنسبة لي:
<Style TargetType="{x:Type Custom:DataGridColumnHeader}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="ToolTip" Value="{Binding Column.(ToolTipService.ToolTip), RelativeSource={RelativeSource Self}}"/>
</Trigger>
</Style.Triggers>
</Style>
نصائح أخرى
الثابتة والمتنقلة، تحقق مما إذا كان الرمز أدناه سيعمل من أجلك، يجب أن يعرض تلميحات الأدوات لرؤوس الأعمدة والخلايا، وينبغي أن يحني Tooltip's Tooltip الخلية حقل الوصف لكائن البيانات:
<DataGridTextColumn Width="SizeToCells"
MinWidth="150"
Binding="{Binding Name}">
<DataGridTextColumn.Header>
<TextBlock Text="Name" ToolTipService.ToolTip="Header ToolTip" />
</DataGridTextColumn.Header>
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="ToolTip" Value="{Binding Description}" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
وجدت الحل هنا: 5 عشوائي Gotchas مع WPF DataGrid
datagridtextcolumn غير مرئي. يجب عليك تعيين ToolTips على الرأس أو المحتوى.
لتعيين أداة تلميح على الرأس، قم بتغيير رأس إلى TextBlock:
<tk:DataGridTextColumn
Binding="{Binding Item.Title}">
<tk:DataGridTextColumn.Header>
<TextBlock
Text="Text"
ToolTipService.ToolTip="Tooltip for header" />
</tk:DataGridTextColumn.Header>
</tk:DataGridTextColumn>
لتعيين تلميح الأدوات في محتويات الأعمدة، قم بتعيينه في النمط:
<tk:DataGridTextColumn
Binding="{Binding Item.Title}"
Heading="Text">
<tk:DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="ToolTipService.ToolTip" Value="{Binding Item.Description}" />
</Style>
</tk:DataGridTextColumn.ElementStyle>
</tk:DataGridTextColumn>
قد ترغب أيضا في تعيين EditingElementStyle
.
بالإضافة إلى ذلك، إذا كان العمود الخاص بك هو DataGridTemplateColumn بدلا من DatagridTextColumn، فيمكنك القيام بذلك مثل هذا:
<DataGridTemplateColumn x:Name="MyCheckBoxColumn" CellStyle="{StaticResource MyCellStyle}" >
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="MyHeaderName" ToolTip="This is my column description" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox ... />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
تعيين ToolTipservice.tooltip الخاصية في نمط رأس:
<Setter Property="ToolTipService.ToolTip" Value="{x:Static res:StringResources.List_Dialog_SelectAll_Checkbox}"/>
هنا هو كيف استخدمته عندما كان لدي صورة في DataGridcheckBoxColumn بدلا من النص. XAML:
<Window x:Class="MyProject.GUI.ListDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:viewModel="clr-MyProject.GUI.ViewModels"
Title="{Binding Title}" Height="350" Width="650"
MinHeight="350" MinWidth="650"
xmlns:res="clr-MyProject.GUI.Resources" Closing="Window_Closing" WindowStyle="ToolWindow">
<Window.Resources>
<BitmapImage x:Key="MyImageSource" UriSource="Resources/Images/SelectDeselect.png" />
<Style x:Key="CheckBoxHeader" TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="ToolTipService.ToolTip" Value="{x:Static res:StringResources.List_Dialog_SelectAll_Checkbox}"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Image Width="15" Height="15" Source="{StaticResource MyImageSource}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
C #:
DataGridCheckBoxColumn checkColumn = new DataGridCheckBoxColumn();
checkColumn.HeaderStyle = new System.Windows.Style();
checkColumn.CanUserSort = checkColumn.CanUserResize = false;
checkColumn.Width = new DataGridLength(25);
checkColumn.HeaderStyle = (Style)Resources["CheckBoxHeader"];
checkColumn.CellStyle = (Style)Resources["CenterAlignedCellStyle"];
checkColumn.IsReadOnly = false;
dataGrid.Columns.Add(checkColumn);