La visibilité de liaison pour DataGridColumn dans WPF


Answers

 <Window.Resources>
        <ResourceDictionary>
            <FrameworkElement x:Key="ProxyElement" DataContext="{Binding}" />
        </ResourceDictionary>
 </Window.Resources>

 <ContentControl Content="{StaticResource ProxyElement}" Visibility="Collapsed" />
     <mch:MCHDataGrid Height="350"
                         AutoGenerateColumns="False"
                         FlowDirection="LeftToRight"
                         ItemsSource="{Binding PayStructures}"
                         SelectedItem="{Binding SelectedItem}">
            <DataGrid.Columns>
                <DataGridTemplateColumn Width="70"
                                        Header="name"
                                        IsReadOnly="True"
                                        Visibility="{Binding DataContext.IsShowName,
                                                             Source={StaticResource ProxyElement}}">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding FieldName}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

            </DataGrid.Columns>
        </mch:MCHDataGrid>

dans le modèle de vue

 private Visibility _isShowName;
        public Visibility IsShowName
        {
            get { return _isShowName; }
            set
            {
                _isShowName = value;
                OnPropertyChanged();
            }
        }
Question

Comment puis-je cacher une colonne dans un DataGrid WPF via une liaison?

C'est ce que j'ai fait:

<DataGridTextColumn Header="Column header"
                    Binding="{Binding ColumnValue}"
                    Width="100"
                    ElementStyle="{StaticResource DataGridRightAlign}"
                    Visibility="{Binding MyColumnVisibility}" />

Et voici ce que j'ai (à part la colonne encore visible):

Erreur System.Windows.Data: 2: Impossible de trouver la règle FrameworkElement ou FrameworkContentElement pour l'élément cible. BindingExpression: Path = MyColumnVisibility; DataItem = null; l'élément cible est 'DataGridTextColumn' (HashCode = 1460142); La propriété target est 'Visibility' (type 'Visibility')

Je ne sais pas ce que gouverner signifie. Y a-t-il quelque part, dans ma fenêtre, un président qui décide de ce qui fonctionne et de ce qui ne fonctionne pas? Ou devrais-je voter pour quelque chose?

En cherchant des solutions sur le web, j'ai trouvé comme une douzaine de pages avec un titre prometteur mais des contenus totalement indépendants ou non reproductibles. Donc, cela semble être la première question sur le problème. Une idée?




Links