Я пытаюсь создать DataGrid с элементами управления, которые позволят пользователю показывать/скрывать столбцы. У моего DataGrid будет что-то вроде 40 столбцов, и не все могут быть необходимы все время. Я смог сделать это с помощью ListView, который использует GridView. Вот код:Показать/скрыть столбцы DataGrid XAML
<DataGrid Name="MyDataGrid" Grid.Row="2" Grid.Column="0" ItemsSource="{Binding ReportOrderingCustomersForSalesRepCollection}" Style="{DynamicResource styleDataGrid}" HeadersVisibility="All" AutoGenerateColumns="False" RowHeaderWidth="0" RowHeight="25">
<DataGrid.Columns>
<DataGridTextColumn Header="Customer #" Binding="{Binding CustomerNumber}" Width="90" Visibility="{Binding ElementName=Visibility_Txt,Path=Text,Mode=OneWay}"/>
<DataGridTextColumn Header="Customer Name" Binding="{Binding CustomerName}" Width="125" />
<DataGridTemplateColumn Header="Email" CellTemplate="{StaticResource Email}" Width="150" />
</DataGrid.Columns>
</DataGrid>
<!-- text box -->
<TextBox Name="Visiblility_Txt">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ColumnVisibilityCheck,Path=IsChecked}" Value="False">
<Setter Property="Text" Value="Collapsed" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=ColumnVisibilityCheck,Path=IsChecked}" Value="True">
<Setter Property="Text" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<!-- checkbox -->
<CheckBox Content="Show/Hide Customer Number" Name="ColumnVisibilityCheck" IsChecked="True" />
Так у меня есть настройки DataGrid. Свойство видимости на первой DataGridTextColumn задано как привязка к текстовому свойству «Visibility_Txt». Текст в этом текстовом поле будет установлен как «Свернутый», так и «Видимый» в зависимости от того, установлен ли флажок ColumnVisibilityCheck или нет.
Как я уже сказал, это работает со списком, почему это не работает с DataGrid?
ViewModel/Code-Behind? И у вас есть как минимум 3 строки сетки, но нет определений строк –
Строки заполняются из ItemsSource. Я хочу показать/скрыть отдельные столбцы. – EMAW2008
сетки строк не совпадает с DataGrid строк: RowDefinition> RowDefinition> –