如何将ListViews可见性绑定到计算?我希望只有在DataContexts集合中有多个记录(IEnumerable)时才能看到Listviews:
答案 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>