【问题标题】:Visibility.Collapse doesn't fully collapse item on Win8Visibility.Collapse 不会在 Win8 上完全折叠项目
【发布时间】:2013-03-02 17:31:06
【问题描述】:

我正在对列表视图控件中的项目进行过滤。当项目应该被过滤掉时,我将该项目的可见性更改为 Visibility.Collapsed。

虽然在 Windows 7 中运行良好:
http://www.imagebam.com/image/4c8cab240432140

在 Windows 8 上折叠的项目没有完全折叠,并留下大约 4 像素的空白空间:
http://www.imagebam.com/image/6ab32b240431990

XAML 项目模板:

<ListView.ItemTemplate>
    <DataTemplate DataType="ItemOfInterest">
        <DockPanel Visibility="{Binding Visible}">
            <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
                <TextBlock FontSize="15" Padding="1,0,0,0" TextWrapping="NoWrap" Text="{Binding Path=Title}" Foreground="{Binding Color}"></TextBlock>
                <TextBlock FontSize="11" Padding="10,0,0,0" VerticalAlignment="Bottom" TextWrapping="Wrap" Foreground="Gray" Text="{Binding Path=Owner}"></TextBlock>
                <TextBlock FontSize="12" Padding="10,0,0,0" VerticalAlignment="Bottom" TextWrapping="Wrap" Foreground="White" Text="{Binding Path=StashName}"></TextBlock>
                <TextBlock FontSize="11" Padding="10,0,0,0" VerticalAlignment="Bottom" TextWrapping="Wrap" Foreground="Gray" Text="{Binding Path=StashPos}"></TextBlock>
            </StackPanel>
            <TextBlock DockPanel.Dock="Bottom" FontSize="11" Padding="10,0,0,0" Visibility="{Binding DisplayExtraLine}" TextWrapping="Wrap" Foreground="Gray" Text="{Binding Path=ExtraLine}"></TextBlock>
        </DockPanel>
    </DataTemplate>
</ListView.ItemTemplate>

任何想法是什么导致了这个?或者绕过这个的唯一方法是在过滤掉项目时从列表中删除它们?

【问题讨论】:

    标签: c# wpf xaml listview windows-8


    【解决方案1】:

    如果您使用Snoop,您将能够看到每个ListViewItem 在高度为4 的Border 内。因此,当您折叠DockPanel 时,Border 的高度仍然为 4 .

    解决方案是创建一个ItemContainerStyle 并隐藏Border 以及或代替子DockPanel

    这是我的解决方案。我的 Visible 属性是一个布尔值,这就是我需要转换器的原因。

    <Grid.Resources>
        <Style x:Key="ItemContainerStyle" TargetType="{x:Type ListViewItem}">
            <Setter Property="Visibility" 
                    Value="{Binding Visible, 
                            Converter={StaticResource BoolToVisibility}}"/>
        </Style>
    </Grid.Resources>
    
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    
    <ListView ItemsSource="{Binding Items}" 
              ItemContainerStyle="{StaticResource ItemContainerStyle}">
        <ListView.ItemTemplate>
            <DataTemplate DataType="wpfSampleExplorer:ItemOfInterest">
                <DockPanel>
                    <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
                        <TextBlock FontSize="15" Text="{Binding Path=Title}"/>>
                    </StackPanel>
                </DockPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 2017-06-17
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2020-08-20
      相关资源
      最近更新 更多