C# 柱未完全折叠
我正在尝试根据以下代码的条件折叠柱:C# 柱未完全折叠,c#,wpf,wpfdatagrid,C#,Wpf,Wpfdatagrid,我正在尝试根据以下代码的条件折叠柱: <DataGridTextColumn Header="MyColumn" Binding="{Binding MyProperty}"> <DataGridTextColumn.HeaderStyle> <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="Width" Value="
<DataGridTextColumn Header="MyColumn" Binding="{Binding MyProperty}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Width" Value="0cm"/>
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ThisView, Path=DataContext.MyboolProperty}" Value="true">
<Setter Property="Width" Value="2.5cm"/>
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
问题是柱子没有完全倒塌,我可以看到柱子的一部分
我也尝试过这个代码:
<DataGridTextColumn Header="MyColumn" Binding="{Binding MyProperty}"
Width="0cm"
Visibility="Collapsed">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ThisView, Path=DataContext.MyboolProperty}" Value="true">
<Setter Property="Width" Value="2.5cm"/>
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
在本例中,该列按预期折叠,但如果触发器为true,则该列仍然折叠
我也尝试过这个选项:
<DataGridTextColumn Header="MyColumn" Binding="{Binding MyProperty}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ThisView, Path=DataContext.MyboolProperty}" Value="true">
<Setter Property="Width" Value="2.5cm"/>
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=ThisView, Path=DataContext.MyboolProperty}" Value="false">
<Setter Property="Width" Value="0cm"/>
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
但该行为与第一个选项相同,它不是完全折叠的,但当触发器的属性为true时它会工作。您的数据触发器位于列标题模板内,因此它只能更改列标题的属性(不是完整的列,即单元格) 对于
DataGridTextColumn
,没有样式
,因此不能使用DataTrigger
。但是转换器应该可以
然而,另一个问题是列不在可视化树中,所以不能使用ElementName
或RelativeSource
,它们根本不起作用。然而,有一个简单的问题。然后,您的列将如下所示:
<Window.Resources>
<BooleanToVisibilityConverter x:Key="converter" />
<local:BindingProxy x:Key="proxy" Data="{Binding}" />
</Window.Resources>
...
<DataGridTextColumn Header="MyColumn"
Binding="{Binding MyProperty}"
Visibility="{Binding Data.MyboolProperty, Source={StaticResource proxy}, Converter={StaticResource converter}}" />
...
数据触发器正在更改列标题的可见性,而不是列的可见性(如第二个示例所示)。非常感谢您提供的解决方案,并解释了更一般的基本概念。