2017-03-01 30 views
2

問題
リストボックスがあり、そのリストボックスにチェックボックスがあります。最初のクリックで、チェックボックスが選択され、チェックされます。 2回目のクリックで、チェックボックスのみが設定されます。矢印キーを使用して異なるチェックボックスを再選択することができます。私の目標は、チェックボックスが最初に選択された後にチェックされ(再度クリックする)、矢印キーが不要になるということです。XAMLリストボックス(チェックボックス付き)チェックボックスをオンにして、チェックボックスをオンにします。

目標

<ListBox Name="Terminals" ItemsSource="{Binding AllTerminals, Mode=OneWay}" IsSynchronizedWithCurrentItem="True"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <CheckBox Content="{Binding Description}" Foreground="{Binding DisplayColor}"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

答えて

3

無効クリックregistra:

  • が第二のクリック

コード上のチェックボックスをチェックしてください最初のクリック

  • の項目を選択ListBoxItemの選択状態にIsHitTestVisibleプロパティを結合を介したチェックボックスをション:項目が追加された後、最初のクリックだけListBoxItemやチェックボックスを選択します

    <ListBox Name="Terminals" ItemsSource="{Binding AllTerminals, Mode=OneWay}" IsSynchronizedWithCurrentItem="True"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <CheckBox Content="{Binding Description}" 
             IsHitTestVisible="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" 
             Foreground="{Binding DisplayColor}"/> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
    </ListBox> 
    

    この方法は、第二のクリック


    によって未チェック/確認することができますListBoxには、ビジュアルツリーは次のとおりです。

    ユーザーがListBoxItemをクリックすると、選択されます(IsSelected = true)。ユーザーがCheckBoxをクリックすると、チェックボックスがオンになります。しかし、IsHitTestVisibleがfalseに設定されている場合、要素をクリックすると登録されません。チェック/チェックを外しが選択したアイテムのみのために働く必要がありますので、我々は、迅速な答えを

  • +0

    おかげで私はそれを非常にありがとうございました私のため –

    +0

    作品を試しを与えるでしょう、このような効果を達成するためにListBoxItem.IsSelected CheckBox.IsHitTestVisibleと親の間の結合を作成することができます多く:)あなたが時間を見つけたら、私は完全に理解できるように、これがどのように働くかを拡大することができますか? –

    +1

    @Nerdintraining、私の更新を見て、それはどのように動作するの説明を追加しました – ASh

    関連する問題