如何将 ListViews 可见性绑定到计算?仅当 DataContexts 集合(IEnumerable)中有多个记录时,我希望 Listviews 可见
问问题
86 次
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
你可以绑定Visibility
到HasItems
:
<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 回答