在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.IsHitTestVisible
设为false,则无法更改。如果StackPanel's
属性设置为false,则内部ListBox
不再可点击,但有趣的是TextBlock
仍然存在。外部ListBox's
属性可以防止点击任何内容。
如果外部ListBox
是ListView
,则行为相同。
我还没想出我需要更改的内容,以确保只启用内部列表中的项目。有什么想法吗?
答案 0 :(得分: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 >