は、私は、ユーザーが項目の選択を解除することを可能にするリストボックスを構築しようとしているしません。WPF ListBox.UnselectAllは()明確な視覚的な状態
<ListBox Name="MyListBox"
ItemsSource="{Binding MoeglicheHauptspeisen}"
SelectionMode="Single">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Width="200"
Height="200"
Background="{StaticResource Braun}"
MouseDown="Speise_Gedrueckt">
<TextBlock Margin="0 50 0 0"
HorizontalAlignment="Center"
Text="{Binding SpeiseTyp}" />
<TextBlock HorizontalAlignment="Center" Text="{Binding Beschreibung}" />
<TextBlock HorizontalAlignment="Center" Text="{Binding Preis, StringFormat={}{0:C}}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
そして、私のコードビハインド:
は、これは私のXAMLコードで、私は再びそれをクリックすることでアイテムの選択を解除することができます
private void Speise_Gedrueckt(object sender, MouseButtonEventArgs e)
{
MyListBox.UnselectAll();
}
、それはなどを-1にSelectedIndexを設定ん選択された項目がListBox自体に持つ境界線をクリアしません。
私は多くのことをグーグルでしたが、私が見つけたものは、その事実を変えませんでした。私はstyle.setterで選択された項目の境界線/背景を設定しようとしましたが、それはまた助けにはなりませんでした。
あなたの答えをありがとう。 "Speise_Gedrueckt"ハンドラは、すべてのListBoxアイテムのクリックハンドラです。ハンドラが行うのは、ListBoxのSelectedItemがハンドラが処理しているものであるかどうかをチェックすることです。その場合は、すべてを選択解除します。これは、選択された項目を「選択解除」できるようにする動作をもたらすはずです。値は正しく設定されていますが、ビジュアル状態はクリアされません。つまり、以前選択したアイテムの周りに境界線が残っています。 –
ListBoxアイテムのItemTemplateとして直接StackPanelの代わりにButtonを使用しようとしました。働いた。 StackPanelの境界をクリアしないのはなぜですか?それは選択された問題より多くの焦点ですか? –