gpt4 book ai didi

wpf - 显示/隐藏 DataGrid 列 XAML

转载 作者:行者123 更新时间:2023-12-02 04:20:46 32 4
gpt4 key购买 nike

我正在尝试构建一个带有控件的 DataGrid,该控件允许用户显示/隐藏列。我的 DataGrid 将有大约 40 列,但并非所有列都始终是必需的。我已经能够使用使用 GridView 的 ListView 来完成这件事。这是代码:

<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 属性设置为与“Visibility_Txt”文本属性的绑定(bind)。该文本框中的文本将设置为“折叠”或“可见”,具体取决于是否选中 ColumnVisibilityCheck。

就像我说的,这适用于 ListView ,为什么这不适用于 DataGrid?

最佳答案

能够找到更多关于此的信息。这个链接有一个很好的答案/解释。 datagridtextcolumn-visibility-binding

事实证明,DataGrid 的列不会出现在 DataGrid 的可视化树中。

但答案是在可见性绑定(bind)中使用 x:reference 和 BooleanToVisibilityConverter:

<DataGridTextColumn Header="Customer #" x:Name="CustNum_Col" Visibility="{Binding Source={x:Reference VisibilityCheck}, Path=IsChecked,Converter={StaticResource ObjectToVisibilityConverter}}" />

Visual Studio 将在绑定(bind)下显示一条波浪线,表示“对象未设置为对象的实例”,但这似乎仍然有效。

关于wpf - 显示/隐藏 DataGrid 列 XAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30621672/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com