1

私はListヘッダーとサブアイテムでいくつかのアイテムを保存します

_categories = new List<Category>();

Category cOne = new Category() { Header = "Category one" };
cOne.AddItem("Sub One");
cOne.AddItem("Sub Two");
cOne.AddItem("Sub Three");
_categories.Add(cOne);

WPFでは、これらのアイテムをにバインドしListBoxます。

<ListBox x:Name="listbox">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel>
        <TextBlock Text="{Binding Header}" />
        <ListBox ItemsSource="{Binding Subs}" Padding="10 0 0 0" />
      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

私が今試したが失敗したのは、内側のListBoxクリック可能なアイテムのみを作成することです。つまり、次のことを回避します。

ここに画像の説明を入力してください

設定TextBlock.IsEnabledまたはTextBlock.IsHitTestVisiblefalseに設定しても、何も変わりません。プロパティがfalseに設定されている場合StackPanel's、内部ListBoxはクリックできなくなりますが、興味深いことに、TextBlockまだクリックできます。そして、外側のListBox'sプロパティは何もクリックすることを防ぎます。

アウターListBoxListView代わりの場合、動作は同じです。

内部リストの項目のみが有効になっていることを確認するために何を変更する必要があるのか​​、まだわかりません。何か案は?

4

1 に答える 1

2

外側のアイテムを選択する必要がない場合は、ListBox使用しないでくださいListBox-ItemsControl代わりに使用してください:

<ItemsControl x:Name="itemsControl">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding Header}" />
                <ListBox ItemsSource="{Binding Subs}" Padding="10 0 0 0" />
            </StackPanel>
        </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl >
于 2012-12-17T16:54:03.863 に答える