17

ObservableCollectionにバインドされたListViewがあります。データはインターネットから読み込まれ、コレクションに追加されます。ダウンロードには数秒かかります。データが読み込まれていることをユーザーに示したいと思います。

アクティビティを示すUserControlを作成しました。ControlTemplate内に配置しました。

<ControlTemplate x:Key="ListViewControlTemplate1" TargetType="{x:Type ListView}">
    <Grid>
        <local:ActivityIndicatorControl 
            HorizontalAlignment="Center" 
            Height="Auto" 
            Margin="0" 
            VerticalAlignment="Center"/>
    </Grid>
</ControlTemplate>

ActivityIndicatorControlVisibility ofをプロパティにバインドしたいと思います。たとえばbool IsLoading、それに応じてVisible/Collapsedに設定します。

ありがとう!

4

2 に答える 2

31

IValueConverterを使用してブール値を受け入れ、Visibility列挙のメンバーを返すことをお勧めします。

これがその良い例です:http://jeffhandley.com/archive/2008/10/27/binding-converters --- visibilityconverter.aspx

XAMLは次のようになります。

まず、コンバーターのリソースを定義します(これをリソースディクショナリに入れます)。

<local:BooleanToVisibilityConverter x:Key="myBoolToVisibilityConverter" />

次に、テンプレートを次のように変更します。

<ControlTemplate x:Key="ListViewControlTemplate1" TargetType="{x:Type ListView}">
    <Grid Visibility="{Binding IsLoading, Converter={StaticResource myBoolToVisibilityConverter}}">
        <local:ActivityIndicatorControl 
            HorizontalAlignment="Center" 
            Height="Auto" 
            Margin="0" 
            VerticalAlignment="Center"/>
    </Grid>
</ControlTemplate>
于 2012-05-15T19:34:39.120 に答える
1

.NETの組み込みコンバーターを使用する

.NET 3には、BooleanToVisibilityConverterが組み込まれています。

(注:すべてのプラットフォームで利用できるとは限りません。例:モバイル)

まず、リソースに追加します

<UserControl.Resources>
    <BooleanToVisibilityConverter x:Key="bool2vis"></BooleanToVisibilityConverter>
</UserControl.Resources>

次に、要素に使用します

<Label Visibility="{Binding IsSomeProperty, Converter={StaticResource bool2vis}}" />

反転

BooleanToVisibilityConverterを反転するにはどうすればよいですか?

コンバーターを反転したい場合(例:プロパティがtrueの場合に要素を非表示にする)、この回答には、IValueConverterXAMLを介してそれをサポートするカスタム実装があります

<Application.Resources>
    <app:BooleanToVisibilityConverter 
        x:Key="BooleanToVisibilityConverter" 
        True="Collapsed" 
        False="Visible" />
</Application.Resources>
于 2018-01-31T17:14:51.577 に答える