【问题标题】:Very weird logical error in WPF GridViewColumnHeaderWPF GridViewColumnHeader 中非常奇怪的逻辑错误
【发布时间】:2013-06-28 13:16:34
【问题描述】:

我有自定义树列表视图,并在树列表视图的第一列中放置了一个复选框。一切都很好,但是当我想隐藏复选框列以用于其他目的(使用变量 SelectEnable)时,它没有正确隐藏(它隐藏但保留了一个空白区域)。当我加载数据时会发生此问题(我的意思是当 treelistview 为空时,该列被隐藏)。 这是我的 xaml 的一些片段:

<Style x:Key="checkboxColumnStyle"
       TargetType="GridViewColumnHeader">
  <Setter Property="Width"
          Value="0" />
  <Setter Property="Visibility"
          Value="Hidden" />

  <Style.Triggers>
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource  AncestorType=UserControl},Path=SelectEnable}"
                 Value="False">
      <Setter Property="Visibility"
              Value="Hidden" />
      <Setter Property="Width"
              Value="0" />
    </DataTrigger>
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource  AncestorType=UserControl},Path=SelectEnable}"
                 Value="True">
      <Setter Property="Visibility"
              Value="Visible" />
      <Setter Property="Width"
              Value="30" />
    </DataTrigger>
  </Style.Triggers>
</Style>

<DataTemplate x:Key="CellTemplate_checkBox">
  <CheckBox IsChecked="{Binding IsSelected}"
            VerticalAlignment="Center"
            Style="{DynamicResource checkboxStyle}"
            Tag="{Binding}"
            Checked="CheckBox_Checked"
            Unchecked="CheckBox_Checked" />
</DataTemplate>

<GridViewColumnCollection x:Key="gvcc">
  <GridViewColumn  CellTemplate="{StaticResource CellTemplate_checkBox}">

    <GridViewColumnHeader Style="{DynamicResource checkboxColumnStyle}"
                          MaxWidth="0">
      <CheckBox x:Name="chechBoxAll"
                Style="{DynamicResource checkboxStyle}"
                Checked="chechBoxAll_Checked"
                Unchecked="chechBoxAll_Checked" />
    </GridViewColumnHeader>
  </GridViewColumn>
  <!--Other Columns -->
</GridViewColumnCollection>

我该如何解决这个问题?

【问题讨论】:

    标签: wpf xaml visibility


    【解决方案1】:

    您可能想要Visibility.Collapsed 而不是Visibility.Hidden

    Hidden 表示元素存在但看不到(类似于Opacity of 0),而Collapsed 导致布局排列发生,就好像元素不存在一样(没有宽度和高度)。

    【讨论】:

    • 但我将宽度设置为 0。我检查了这个解决方案。
    • 我尝试将可见性设置为 "collapsed" ,但这对我没有帮助。如果您愿意,我可以通过电子邮件将我的代码发送给您。
    • @alifattahian 你能发一张图片或一个图片链接来突出你看到和不喜欢的部分吗?
    • 这是我的软件的图片(afterbefore
    • 提前感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多