代码之家  ›  专栏  ›  技术社区  ›  Álvaro García

柱未完全折叠

  •  0
  • Álvaro García  · 技术社区  · 7 年前

    我正在尝试根据以下代码的条件折叠柱:

    <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>
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sinatr    7 年前

    标题 模板,因此它只能更改列标题的属性(不是完整的列,即单元格)。

    没有 Style 对于 DataGridTextColumn DataTrigger . 但是转换器应该可以。

    然而,另一个问题是列不在可视化树中,所以不能使用 ElementName RelativeSource ,它们根本不起作用。有一个简单的问题 workaround

    <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}}" />