0

如何将 ListViews 可见性绑定到计算?仅当 DataContexts 集合(IEnumerable)中有多个记录时,我希望 Listviews 可见

4

3 回答 3

1

您可以在ViewModel上创建一个属性CollectionAny,它将调用IEnumerable.Any()方法。您可以直接从ViewModel返回Visibility,但MVVM模式不建议这样做。因此,您可以使用转换器,例如BooleanToVisibilityConverter。如果可以将集合包装到ICollecitionView接口,则可以使用其IsEmpty属性。如果这是您的选择 - 您不需要引发PropertyChanged事件。

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

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

<ListView 
    ...
    Visibility="{Binding Path=CollectionAny, Converter={StaticResource B2VConverter}}" 
    ...
/>
于 2012-05-10T09:27:28.560 回答
1

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

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

在您必须创建的 CollectionCountToVisibilityConverter 中,您将检查传入的集合中的项目数,然后返回正确的可见性值

于 2012-05-10T09:34:01.597 回答
0

你可以绑定VisibilityHasItems

<Style>
    <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=myList, Path=HasItems}" Value="False">
            <Setter Property="UIElement.Visibility" Value="Collapsed" />
        </DataTrigger>
    </Style.Triggers>
</Style>
于 2012-05-10T09:29:01.587 回答