Comment lier DataGridTemplateColumn.Visibility à une propriété en dehors de DataGrid.ItemsSource?
J'ai besoin de lier la Visibility
d'un DataGridTemplateColumn
d'une propriété en dehors de la DataGrid.ItemsSource
,parce que j'ai besoin de lier cette colonne dans les toutes les lignes d'une propriété à l'intérieur de la ViewModel
,mais comme je sais que vous ne pouvez lier à quelque chose à l'intérieur de la ItemsSource
ou vous devez utiliser ElementStyle
et EditingElementStyle
J'ai Déjà essayé ce code:
<DataGridTemplateColumn Header="post"
Visibility="{Binding DataContext.ProjectPostVisibility
, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=MvvmCommonControl:DataGrid}}"/>
Et je suis Sûr que ma liaison est correcte, car il fonctionne très bien lorsque je la lie de la DataGridCell.Visibility
comme ci-dessous:
<DataGridTemplateColumn Header="post">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Visibility" Value="{Binding DataContext.ProjectPostVisibility,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=MvvmCommonControl:DataGrid}}"/>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn >
source d'informationauteur Mahboobeh Mohammadi
Vous devez vous connecter pour publier un commentaire.
Votre liaison est correcte, mais il ne fonctionne pas avec
DataGridTemplateColumn
directement, car elle n'est pas dans l'arborescence visuelle. Il n'est donc pas inhertingDataContext
.Vous avez besoin de lier la
DataGridTemplateColumn
de code derrière. Voici une démo , qui montre une manière de le faire.Ajouter cette setter dans le DataGridTemplateColumn.CellStyle et fait:
Si vous avez besoin de plus d'aide regarde mon exemple ci-dessous.
Je veux que le bouton Supprimer pour ne pas être visible au niveau du projet. Vous devez d'abord assurez-vous d'avoir un isVisible bien à votre modèle d'affichage:
Alors:
XAML: