リストボックスにデータがあるかどうかを判断する方法はありますかXAMLで?
データがない場合は、IsVisibileプロパティをfalseに設定します。
ListBoxには、バインドできる HasItems プロパティが含まれています。だからあなたはこれをすることができます:
<BooleanToVisibilityConverter x:Key="BooleanToVisibility" />
...
<ListBox
Visibility="{Binding HasItems,
RelativeSource={RelativeSource Self},
Converter=BooleanToVisibility}" />
または、コンバーターを必要としないトリガーとして:
<ListBox>
<ListBox.Style>
<Style TargetType="{x:Type ListBox}">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger
Binding="{Binding HasItems, RelativeSource={RelativeSource Self}}"
Value="False">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
私はバインディングをテストしていないので、いくつかのタイプミスがあるかもしれませんが、あなたはその考えを理解する必要があります。
トリガーでそれを行うと、ValueConverterは必要ありません。
<ListBox>
<ListBox.Style>
<Style TargetType="{x:Type ListBox}">
<Style.Triggers>
<DataTrigger
Binding="Items.Count, {Binding RelativeSource={RelativeSource Self}}"
Value="0">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
つまり、デフォルトではListBoxが表示されますが、Items.Countが0の場合、ListBoxは非表示になります。
<ListBox.Style>
<Style TargetType="ListBox">
<Setter Property="Visibility" Value="Visible"/>
<Style.Triggers>
<Trigger Property="HasItems" Value="False">
<Setter Property="Visibility" Value="Hidden"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.Style>
おそらく、ValueConverterと通常のバインディングを使用してこれを機能させることができます。
可視性を次のように設定します。
Visibility = "{Binding myListbox.Items.Count, Converter={StaticResource VisibilityConverter}}"
次に、カウントの値に基づいてVisibility.Collapsedなどを返すようにコンバーターを設定します。