簡體   English   中英

Visibility.Collapse不會完全折疊Win8上的項目

[英]Visibility.Collapse doesn't fully collapse item on Win8

我正在為listview控件中的項目進行過濾。 當項目被過濾掉時,我將該項目的可見性更改為Visibility.Collapsed。

在Windows 7中它運行良好:
Win7的 http://www.imagebam.com/image/4c8cab240432140

在Windows 8上,折疊項目沒有完全折疊,並留下大約4個空白空間:
Win7的 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>

是什么原因引起了這個? 或者繞過這個的唯一方法是在過濾掉項目時從列表中刪除項目?

如果使用Snoop,您將能夠看到每個ListViewItem位於高度為4的Border內。因此,當您折疊DockPanelBorder的高度仍為4。

解決方案是創建一個ItemContainerStyle並隱藏Border以及代替子DockPanel

這是我的解決方案。 我的Visible屬性是bool,這就是我需要轉換器的原因。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM