<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을 사용하여 만든 TreeViewItem을 왼쪽 마우스로 클릭하면 선택되지 않습니다. 코드에서 코드를 선택하면 다시 선택하거나 선택을 취소 할 수 없습니다.DataTemplate을 사용하여 만든 TreeViewItem을 왼쪽 마우스로 클릭하면 어떻게 선택되지 않습니까?
TreeViewItem selectedItem = MyTreeView.SelectedItem as TreeViewItem;
if(selectedItem != null) {
selectedItem.IsSelected = false;
MyTreeView.Focus();
}
은 내가 TreeView
에 TreeViewItems
선택을 취소하기 위해 아래 사용하려했지만, 그것은 단지 그들이 정적 XAML에서 설정하는 경우 TreeViewItems
의 선택을 취소하고, 그들이는 ItemsSource
및 DataTemplate
을 사용하여 생성되지 않은 경우?
흠 ...'TreeViewItem' 객체를 만들어서 TreeViewItem.Items에 넣을 필요가 있다고 생각했거나 그렇게 취급하지는 않을 것입니다.하지만 이것은 저에게 효과적입니다. –
'TreeView'는'ItemsControl'에서 상속 받기 때문에 자동으로 모든 항목을 적절한 컨테이너 ('TreeViewItem')에 래핑합니다. 템플리트에 또 다른'TreeViewItem'을 넣는 것은 그것이 두 번 감싸 인 것을 의미하며, 약간 혼란 스럽습니다. – Chris