none
listview的listviewitem 的显示 RRS feed

  • 问题

  •             <ScrollViewer Grid.Column="0" Grid.ColumnSpan="2">
                    <ListView x:Name="fileNameList"  SelectionChanged="ListView_SelectionChanged" ItemsSource="{ Binding }" >            
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding errorFileInfoElment.filePath,Converter={StaticResource FileListValueConverter} }"
                                           HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="{Binding matches, Converter={StaticResource VisibilityValueConverter}}" />                     
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                </ScrollViewer>

    一个列表根据viewmodule的 绑定到listview ,然后 DataTemplate的TextBlock 显示filepath
    如图


    列表的部分项需要隐藏 ,所以我把Visibility属性做了绑定

    但是我利用Collapsed隐藏列表项

    却这样显示


    虽然折叠了,但是依然有空间,而且也能触发SelectionChanged事件.

    请问如何才可以完全隐藏它,同时不触发事件。

    2015年4月12日 13:52

答案

  • Hi ben302010,

    我看到你的代码里只是隐藏了Textblock,而ListViewItem没有被隐藏,因此才会出现你这样的问题,你需要将ListViewItem的Visibility属性进行绑定,以将它与TextBlock一同隐藏,我写了段代码供你参考:

    <ListView x:Name="fileNameList" SelectionChanged="fileNameList_SelectionChanged">
    
                    <ListView.ItemContainerStyle>
                        <Style TargetType="ListViewItem">
                            <Setter Property="Visibility" Value="{Binding visibility, Converter={StaticResource ConvertVisibility}}"/>
                        </Style>
                    </ListView.ItemContainerStyle>
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding filename}" Visibility="{Binding visibility, Converter={StaticResource ConvertVisibility}}" />
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
    

    Best Regards,

    Eoro

    • 已标记为答案 ben302010 2015年4月14日 7:51
    2015年4月14日 1:52

全部回复

  • 建议根据你的隐藏条件对viewmodule进行查询, 然后将查询绑定到ListView.

    https://msdn.microsoft.com/zh-cn/library/bb910060%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    2015年4月14日 1:21
  • Hi ben302010,

    我看到你的代码里只是隐藏了Textblock,而ListViewItem没有被隐藏,因此才会出现你这样的问题,你需要将ListViewItem的Visibility属性进行绑定,以将它与TextBlock一同隐藏,我写了段代码供你参考:

    <ListView x:Name="fileNameList" SelectionChanged="fileNameList_SelectionChanged">
    
                    <ListView.ItemContainerStyle>
                        <Style TargetType="ListViewItem">
                            <Setter Property="Visibility" Value="{Binding visibility, Converter={StaticResource ConvertVisibility}}"/>
                        </Style>
                    </ListView.ItemContainerStyle>
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding filename}" Visibility="{Binding visibility, Converter={StaticResource ConvertVisibility}}" />
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
    

    Best Regards,

    Eoro

    • 已标记为答案 ben302010 2015年4月14日 7:51
    2015年4月14日 1:52
  • 这样也行,但是就好像不是mvvm模式了
    2015年4月14日 7:53
  • 谢谢你的回答,问题已解决
    2015年4月14日 7:53