【发布时间】:2013-07-10 14:14:48
【问题描述】:
<TreeView Name="MyTreeView" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling">
<TreeView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel IsItemsHost="True"/>
</ItemsPanelTemplate>
</TreeView.ItemsPanel>
<TreeView.Resources>
<DataTemplate DataType="{x:Type EntityType:MyFixedDevice}">
<TreeViewItem IsHitTestVisible="True" IsEnabled="True">
<TreeViewItem.Header>
<TextBlock Text="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource NameConverter}}"
IsHitTestVisible="True" IsEnabled="True"/>
</TreeViewItem.Header>
</TreeViewItem>
</DataTemplate>
</TreeView.Resources>
<TreeView.Items>
<TreeViewItem Header="Data Warehouse">
<TreeViewItem.Items>
<TreeViewItem Header="Platforms">
<TreeViewItem.Items>
<TreeViewItem ItemsSource="{Binding OBJS, Converter={StaticResource COBJSourceConverter}, ConverterParameter=Fixed}">
<TreeViewItem.Header>
<TextBlock Text="{Binding RelativeSource={RelativeSource Self},
Path=Parent.Items.Count,
StringFormat=Fixed Devices ({0})}">
</TextBlock>
</TreeViewItem.Header>
</TreeViewItem>
</TreeViewItem.Items>
</TreeViewItem>
</TreeViewItem.Items>
</TreeViewItem>
</TreeView.Items>
</TreeView>
为什么用 DataTemplate 创建的 TreeViewItems 左键单击没有选中它们?为什么我在代码中选择它们,我不能再次选择它们或取消它们?
TreeViewItem selectedItem = MyTreeView.SelectedItem as TreeViewItem;
if(selectedItem != null) {
selectedItem.IsSelected = false;
MyTreeView.Focus();
}
我尝试使用以下方法取消选择 TreeView 中的 TreeViewItems,但它只会取消选择 TreeViewItems 如果它们是在 XAML 中静态设置的,而不是如果它们是使用 ItemsSource 创建的和DataTemplate?
【问题讨论】:
标签: c# wpf xaml datatemplate treeviewitem