0

ListViews の可視性を計算にバインドするにはどうすればよいですか? DataContexts コレクション (IEnumerable) に複数のレコードがある場合にのみ、リストビューを表示したい

4

3 に答える 3

1

IEnumerable.Any()メソッドを呼び出すViewModelにプロパティCollectionAnyを作成できます。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 で、渡された Collection 内のアイテムの数を確認し、正しい Visibility 値を返します。

于 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 に答える