ListView如果有多行,则可见

时间:2012-05-10 09:12:18

标签: .net wpf listview visibility

如何将ListViews可见性绑定到计算?我希望只有在DataContexts集合中有多个记录(IEnumerable)时才能看到Listviews:

3 个答案:

答案 0 :(得分:1)

您可以在 ViewModel 上创建属性 CollectionAny ,该属性将调用 IEnumerable.Any()方法。您可以直接从 ViewModel 返回可见性,但不建议 MVVM 模式。因此,您可以使用转换器,例如 BooleanToVisibilityConverter 。如果您可以将集合包装到 ICollecitionView 界面,则可以使用其 IsEmpty 属性。如果是您的选择 - 您不需要举起 PropertyChanged 事件。

这里将布尔属性绑定到Visibility的示例:

<!-- Inside your resources define the converter instance -->
<BooleanToVisibilityConverter x:Key="B2VConverter">
...

<ListView 
    ...
    Visibility="{Binding Path=CollectionAny, Converter={StaticResource B2VConverter}}" 
    ...
/>

答案 1 :(得分:1)

通过像这样的转换器将列表视图的可见性绑定到集合

<ListView x:Name="listView" 
ItemsSource="{Binding CollectionWithObjectsIn}" 
Visibility="{Binding CollectionWithObjectsIn, Converter={StaticResource      
 CollectionCountToVisibilityConverter}}"/>

在您必须创建的CollectionCountToVisibilityConverter中,您将检查传入的Collection中的项目数,然后返回正确的Visibility值

答案 2 :(得分:0)

您可以将Visibility绑定到HasItems

<Style>
    <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=myList, Path=HasItems}" Value="False">
            <Setter Property="UIElement.Visibility" Value="Collapsed" />
        </DataTrigger>
    </Style.Triggers>
</Style>