質問

いlistboxの項目を含むチェックボックス:

<ListBox Style="{StaticResource CheckBoxListStyle}" Name="EditListBox">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <CheckBox Click="Checkbox_Click" IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" Content="{Binding Path=DisplayText}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

の問題んはいをクリックし、チェックボックスまたはそのコンテンツの親会ListBoxItemな選択します。場合はをクリックしても、空白のチェックボックスのListBoxItemせを選択します。

行動をしているところということを選択した項目のリストのcommand切り替えるには、チェックボックスです。

一部の詳細情報:

private void Checkbox_Click(object sender, RoutedEventArgs e)
{
    CheckBox chkBox = e.OriginalSource as CheckBox;
}

上記のコード私をクリックし、チェックボックス、e.取り扱いがfalseの場合、chkBox.親がnullになります。

ケントの答えを入れて下っていただき、パネルディスカッシからのメッセージその結:

<ListBox Style="{StaticResource CheckBoxListStyle}" Name="EditListBox" PreviewKeyDown="ListBox_PreviewKeyDown">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <CheckBox IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" />
                <TextBlock Text="{Binding DisplayText}"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

利用いただPreviewKeyDownがデフォルトのう場合がございますのでご注意下は、commandリストボックスでdeselectsを除くすべての最近では選択した項目です。

役に立ちましたか?

解決

まず、コンテンツ以外の CheckBox:

<StackPanel Orientation="Horizontal">
    <CheckBox IsChecked="{Binding IsChecked}"/>
    <TextBlock Text="{Binding DisplayText}"/>
</StackPanel>

その後、まることを確実にしなければならな押しスペースに ListBoxItem 結果の CheckBox ているか確認します。いうことで、簡単なイベントハンドラに ListBoxItem.またはを指定できるためのハンドラ UIElement.KeyUp あお DataTemplate:

<CheckBox IsChecked="{Binding IsChecked}" UIElement.KeyUp="..."/>

他のヒント

また結合のIsChecked物件をチェックボックスとIsSelectedのListBoxItem:

<ListBox>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <CheckBox Content="{Binding DisplayText}" IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

ご利用の場合この方法より簡単な使用 ItemsControl の代わりにリストボックス。A ItemsControlはListboxを除きることを含んでいませんの自動選択を構築します。これを使用するホストのリストか基本的にチェックボックスが非常に簡単なんへの回避策のListBoxの選定に活動しています。

単に切り替えItemsControlましょう必要なもの:

<ItemsControl Style="{StaticResource CheckBoxListStyle}" Name="EditListBox">
    <ItemsControl .ItemTemplate>
        <DataTemplate>
            <CheckBox Click="Checkbox_Click" IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" Content="{Binding Path=DisplayText}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

クリックすることができまテキストを確認チェックボックス(デフォルト動作で使えるキーボードもなくワイヤー、イベントハンドラ.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top