2016-10-18 4 views
0

ない私はこのように宣言だListBoxを持っていますそのコンテンツ構造。 ただし、項目の名前をクリックしても、その項目はフォーカス/選択されません。各アイテム間の小さなスペースをクリックするだけで(アイテム名とListBoxのボーダーの間のスペースが最も簡単になります)、アイテムがフォーカスされ/選択されます。クリック/ ListBoxItemのコンテンツに焦点がバブルアップ

もちろん、私は周りを見つけて、私が犯人を見つけたと思った(イベントはバブルアップしない)。しかし、SOまたは他のどこかでここに提供されている解決策、 g。このようなコードを追加:

<ListBoxItem.Style> 
    <Style TargetType="ListBoxItem"> 
    <Style.Triggers> 
     <Trigger Property="IsKeyboardFocusWithin" Value="True"> 
     <Setter Property="IsSelected" Value="True" /> 
     </Trigger> 
    </Style.Triggers> 
    </Style> 
</ListBoxItem.Style> 

はで問題が解決しないになりました。だから、私は何かが間違っていると思うし、私はそれを見るにはあまりにも盲目です。コードビハインドを使用したソリューションがあるかもしれませんが、私はきれいで純粋なXAMLを採用したいと考えています。

私の間違いを理解し解決してください。

答えて

1

目的がListBoxItemのツールヒントを追加する場合は、ItemContainerStyleを使用できます。リストボックスは のDataTemplateにListBoxItemを追加すると、それはいくつかの機能を壊した場合、回避しようと、必要がないので、各データバインドされた項目のListBoxItemsを作成し、それ

<ListBox> 

    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}"> 
      <Setter Property="ToolTip"> 
       <Setter.Value> 
        <Grid> 
         <TextBlock Text="{Binding .}"/> 
        </Grid> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ListBox.ItemContainerStyle> 

    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding .}"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 

</ListBox> 

編集:私は中ListBoxItemを使用してバリアントをチェックするためにスヌープアプリを使用DataTemplate。各ListBox要素のビジュアルツリーには2つのListBoxItemがあります。おそらく1つは別のリストの選択を防ぎます

+0

私はSnoopと間違った 'DataTemplate'コンテンツを指摘してくれてありがとう!私はこのツール(これは私がWPFで開発している間はずっとずっと)を忘れていました。そして、このケースでは、 'DataTemplate'は' ListBoxItem'の_content_を定義するための "紹介"ではないという定義に使用されています。したがって、私は喜んであなたの答えを受け入れる。 :) – Yoda

関連する問題