В этом примере показано, как настроить ToolTip
.В этом случае, исходя из ваших потребностей, вы можете обновить переменную, которую я назвал YourText
, из кода и изменить ToolTip
.
<DataGrid.ToolTip>
<ToolTip Background="#FAFAFA">
<FlowDocumentScrollViewer ScrollViewer.VerticalScrollBarVisibility="Hidden" MaxWidth="250" >
<FlowDocument FontSize="12" LineHeight="16" FontFamily="Sagoe UI" IsOptimalParagraphEnabled="True" IsHyphenationEnabled="True">
<Paragraph>
<Run Text="{Binding Path=YourText, UpdateSourceTrigger=PropertyChanged}" />
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</ToolTip>
</DataGrid.ToolTip>
Обновление:
Вот способполучите элемент DataGrid
, когда вы выполните MouseOver
Сначала добавьте EventSetter
в Style
, как показано ниже:
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<EventSetter Event="MouseEnter" Handler="EventSetter_OnHandler"/>
</Style>
</DataGrid.Resources>
И Handler
должно быть таким:
private void EventSetter_OnHandler (отправитель объекта, MouseEventArgs e)
{
DataGridCell dgc = sender as DataGridCell;
TextBox tb = Utils.GetChildOfType<TextBox>(dgc);
//I assumed you have TextBox for your cell. After finding the element you then need to implement your logic here to update the YourText variable here.
}
Этот помощник поможет вам найти вашу ячейку
public static T GetChildOfType<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj == null) return null;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
var child = VisualTreeHelper.GetChild(depObj, i);
var result = (child as T) ?? GetChildOfType<T>(child);
if (result != null) return result;
}
return null;
}