標準の ListBox が無効になっている場合、その中の要素は単純にグレー表示されます。クリックできないにもかかわらず、それらはまだ表示されています。可能であれば、ListBox が無効になっているときにこれらの項目を非表示にする方法を知りたいです。ItemSource から要素を削除したり、それらの一時ストレージを作成したりしたくありません。
これまでのところ、ListBox の可視性を変更することを考えていましたが、それでは全体 (境界線を含む) がなくなります。
Visibility
あなたはのをバインドすることがListBoxItem
できIsEnabled
ますListBox
<ListBox ItemsSource="{Binding DataSource}">
<ListBox.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</ListBox.Resources>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Visibility" Value="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType=ListBox}, Converter={StaticResource BooleanToVisibilityConverter}}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
フォームに別の ListBox を追加するだけで、最初のリストボックスをその内部の要素で無効にして非表示にし、もう一方をユーザーに表示します。これは基本的に空の灰色のリストボックスになります。
次に、ボックスを有効にすると、空のボックスが非表示になり、実際のボックスが表示されます。
お役に立てれば。