Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将datagrid列可见性绑定到字典值_C#_Wpf_Mvvm_Dictionary_Datagrid - Fatal编程技术网

C# 将datagrid列可见性绑定到字典值

C# 将datagrid列可见性绑定到字典值,c#,wpf,mvvm,dictionary,datagrid,C#,Wpf,Mvvm,Dictionary,Datagrid,人们!我有一个问题: 我在带有DataGrid的MVVM Light上有一个应用程序: <DataGrid ItemsSource="{Binding Path=MyCollection, Mode=TwoWay}" AutoGenerateColumns="False" CanUserAddRows="False" FontSize="14" Name="ItemGrid" SelectionUnit="FullRow" Colum

人们!我有一个问题: 我在带有DataGrid的MVVM Light上有一个应用程序:

    <DataGrid ItemsSource="{Binding Path=MyCollection, Mode=TwoWay}" AutoGenerateColumns="False" CanUserAddRows="False"
                        FontSize="14" Name="ItemGrid" SelectionUnit="FullRow" ColumnHeaderStyle="{StaticResource ResourceKey=DataGridColumnHeader}" Background="Transparent"
                   Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},UpdateSourceTrigger=PropertyChanged}" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="4" 
                        CanUserResizeRows="False" SelectionMode="Single" BorderThickness="0">
                    <DataGrid.RowDetailsTemplate>
                        <DataTemplate>
                            <DataGrid
                                IsReadOnly="True"
                  AutoGenerateColumns="False"
                    ItemsSource="{Binding MyItems}"
                                SelectionUnit="FullRow"
                                Visibility="{Binding Path=DataContext.RowDetailsVisibility, Mode=TwoWay,Converter={StaticResource BoolToVisibilityConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
                                CanUserResizeRows="False"
                                CanUserResizeColumns="True"
                                SelectedItem="{Binding Path=DataContext.SelectedItem, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">
                                <DataGrid.Columns>
                                    <DataGridTextColumn Header="ID" Visibility="Collapsed" Binding="{Binding ID}" Width="Auto" CellStyle="{StaticResource ResourceKey=DataGridCell}" />
                                    <DataGridTextColumn Header="Title" Visibility="Visible" Binding="{Binding Title}" Width="Auto" CellStyle="{StaticResource ResourceKey=DataGridCell}" />
                                </DataGrid.Columns>
                            </DataGrid>
                        </DataTemplate>
                    </DataGrid.RowDetailsTemplate>
                    <DataGrid.Columns>
                        <DataGridTemplateColumn Header="Item Pack ID" Width="*" CellStyle="{StaticResource ResourceKey=DataGridCell}">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Path=Id, Mode=TwoWay}" Style="{StaticResource ResourceKey=TextBoxStyle}"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                       <DataGridTemplateColumn Header="Number" Width="*" CellStyle="{StaticResource ResourceKey=DataGridCell}">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Path=Number, Mode=TwoWay}" Style="{StaticResource ResourceKey=TextBoxStyle}"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
     </DataGrid.Columns>
                </DataGrid.Columns>
                <DataGrid.ContextMenu>
                    <ContextMenu Name="contextMenu" Style="{StaticResource ContextStyle}">
                        </MenuItem>
                        <MenuItem Header="Packs Columns"
                                 ItemsSource="{Binding PacksCollection}"
                                  DisplayMemberPath="Key"
Command="{Binding Path=DataContext.PacksCommand, 
                       RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
                                >
                        </MenuItem>
                        <MenuItem Header="Items Columns"
                       Command="{Binding Path=DataContext.ItemsCommand, 
                       RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
                       ItemsSource="{Binding ItemsCollection}" DisplayMemberPath="Key">
                        </MenuItem> 

                    </ContextMenu>
                </DataGrid.ContextMenu>
            </DataGrid>
        </Grid>
所以,如果你明白的话,我有一个带有PacksId,Number的网格,每个包都有一些ItemsId,Title。我想有一个上下文菜单,它有两个列表:包和项目。在每个菜单项中,我们可以选择要显示的列。 ItemsCollection和PacksCollection是字典,其中字符串-列标题与数据网格中的名称相同,布尔-可见性状态true表示可见,false表示折叠。 问题:如何绑定MVVM单击菜单项,这将改变列的可见性。我尝试了一些解决方案,但对我来说不起作用。 我需要更改DataGrid columnsId、Number和RowDetails DataGrid-Id、Title的可见性。救命啊,我觉得这没那么难。 多谢各位