En raison de la nature de notre logiciel, nous devons créer nos colonnes DataGrid dynamiquement dans le code derrière et l'ajouter ensuite à la DataGrid comme ceci:Comment lier le contenu d'une info-bulle à une propriété MVVM dans le code?
DataGridBoundColumn dataGridBoundColumn = new DataGridTextColumn
{
CellStyle = ...,
Header = header,
Binding = binding
};
reportDataGrid.Columns.Add(dataGridBoundColumn);
Maintenant, nous avons besoin d'une info-bulle sur le columnheader:
ToolTipService.SetToolTip(dataGridBoundColumn, "ENTER VALUE");
Eh bien cela fonctionne bien aussi. Cependant, j'ai besoin de lier la valeur de l'info-bulle à une propriété sur le ViewModel. Je sais comment faire cela dans le xaml, mais je ne sais pas comment le faire dans le code.
Toute aide serait appréciée,
MISE À JOUR:
Merci à la réponse de Steve, j'ai pu résoudre ce problème un peu différemment:
Binding bindingBoundToTooltipProperty = new Binding()
{
Source = reportDataGrid.DataContext,
Path = new PropertyPath("ToolTipSorting")
};
BindingOperations.SetBinding(dataGridBoundColumn, ToolTipService.ToolTipProperty, bindingBoundToTooltipProperty);
si le DataGridColumnHeaderStyle a été personnalisé, assurez-vous pour ajouter ces lignes au modèle aussi:
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="ToolTip" Value="{Binding Column.(ToolTipService.ToolTip), RelativeSource={RelativeSource Self}}"/>
</Trigger>
Merci Steve. Je reçois System.Windows.Data Erreur: 2: Impossible de trouver la gouvernance FrameworkElement ou FrameworkContentElement pour l'élément cible. BindingExpression: Path = ToolTipSorting; DataItem = null; l'élément cible est 'DataGridTextColumn' (HashCode = 42996073); La propriété target est 'ToolTip' (type 'Object') – Houman
Si le Datacontext se trouve dans l'en-tête, comment puis-je me lier à la propriété MVT "ToolTipSorting" sur mon ViewModel? – Houman
Je ne suis pas sûr à 100% que 'DataContext' sera la propriété' Header' - pouvez-vous laisser le chemin de liaison vierge pour voir quel type de contexte de données est dans votre exemple? –