2016-10-14 7 views
0

は、私は、ユーザーが項目の選択を解除することを可能にするリストボックスを構築しようとしているしません。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で選択された項目の境界線/背景を設定しようとしましたが、それはまた助けにはなりませんでした。

答えて

0

ないあなたは、私はEventHandlerのにボタンを追加しましたように、選択した項目をクリアしたいんときを確認します。ボタンがクリックされたときに

<Button Width="100" Height="40" Click="Speise_Gedrueckt"></Button> 

今すぐnullにのSelectedItemを設定します。

private void Speise_Gedrueckt(object sender, RoutedEventArgs routedEventArgs) 
{ 
     MyListBox.SelectedItem = null; 
} 
+0

あなたの答えをありがとう。 "Speise_Gedrueckt"ハンドラは、すべてのListBoxアイテムのクリックハンドラです。ハンドラが行うのは、ListBoxのSelectedItemがハンドラが処理しているものであるかどうかをチェックすることです。その場合は、すべてを選択解除します。これは、選択された項目を「選択解除」できるようにする動作をもたらすはずです。値は正しく設定されていますが、ビジュアル状態はクリアされません。つまり、以前選択したアイテムの周りに境界線が残っています。 –

+0

ListBoxアイテムのItemTemplateとして直接StackPanelの代わりにButtonを使用しようとしました。働いた。 StackPanelの境界をクリアしないのはなぜですか?それは選択された問題より多くの焦点ですか? –

1

Listboxアイテムには、Selected、Notelect、およびFocusedの3つの視覚的状態があることに注意してください。コードビハインドを介してリストボックスアイテムを選択解除しても、キーボードフォーカスはそこに表示されます(クリックして選択した場合)。そういうわけで、何らかの視覚的インジケータが表示されます。

+0

はい、フォーカスビジュアルです。他のUI要素にフォーカスを設定し、そのフォーカスビジュアルが消えてしまうことがあります。 –

関連する問題