我正在尝试使树视图尽可能多地看起来像
我怀疑这是一个树视图,因为驱动器在一种包装面板中,我不能在正常的树视图中实现这一点。
我的最终目标是让它看起来像这样:
现在我们使用的控件已经是HierarchicalDataTemplate
的树视图
但最后一个级别是一个在其自己的模板中重复的集合,因此每个项目有1个节点。我cna删除它没有问题,我知道HierarchicalDataTemplate
这是包含这些项目的最后一项,所以我决定简单地添加一个包装面板,并在其中添加了一个itemscontrol迭代在子集合中,它工作但是HierarchicalDataTemplate
认为是我所谓的节点“标题行”。而不是在下面。这里简要介绍了我的意思。
节点+/-最终位于项目的中间,但问题是那里有数百个项目,滚动不喜欢这样。此外,当我点击节点时,它会突出显示所有内容,然后它会拧紧右侧的滚动条。我把红色虚线放在项目中,选择它认为的项目。
所以我试图在win7中复制“我的电脑”,但是使用子级别而没有节点问题。每个项目都必须单独点击,因为它们是拖放的,它们是我们产品的一部分,并且是在同一窗口内推入CAD引擎窗口的三维模型。
我是否还能完成对任务的良好控制?
编辑* excel 2010中的另一个示例尝试打开剪贴画菜单,出现一个工具栏。所有物品都在一个包裹板中。我想要那个但是有小组/小组。
编辑2 * 任何人都可能知道自定义控件或Microsoft用来制作资源管理器的控件吗?
答案 0 :(得分:1)
了解如何轻松复制。 需要下面的2模板
<DataTemplate DataType="{x:Type local:C3DGalleryFolder}">
<StackPanel>
<Expander Header="{Binding Name}" FontWeight="DemiBold" Background="White">
<ItemsControl Margin="20,0,0,0" ItemsSource="{Binding ListItem, Converter={StaticResource GallerySort}}"/>
</Expander>
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type local:C3DGalleryItems}">
<ItemsControl Margin="15,0,0,0" Name="ItemListing" ItemsSource="{Binding Path=ListItem, Converter={StaticResource GallerySort}}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" Background="White"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="3" Background="White" HorizontalAlignment="Center" VerticalAlignment="Center" >
<Border Background="White" Height="190" Width="120" Margin="1" BorderThickness="1" BorderBrush="DarkBlue" CornerRadius="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid Background="White" Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="118"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Polygon Points="-1,-1 20,-1 -1,20" Stroke="Black" Fill="DarkBlue" Panel.ZIndex="1000000" />
<Image Grid.Row="0" Source="{Binding ImagePath}" Stretch="Uniform" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="5,5,5,5" RenderOptions.BitmapScalingMode="HighQuality" SnapsToDevicePixels="True"></Image>
<TextBlock Grid.Row="1" TextWrapping="Wrap" FontWeight="Regular" Foreground="DarkBlue" Text="{Binding Name}" Width="110" TextAlignment="Center" VerticalAlignment="Center" />
</Grid>
</Border>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
还需要一个简单的项目控件
<ItemsControl Margin="10,0,0,0" Name="lst3dgallery" ItemsSource="{Binding List3DGallery, Converter={StaticResource GallerySort}}" />
那么模型非常简单,您可以创建项目集合添加文件夹,并在其中添加包含项目本身的项目集合
[Serializable()]
public class C3DGallery
{
public string Name { get; set; }
public ObservableCollection<C3DGallery> ListItem { get; set; }
public C3DGallery()
{
Name = "";
ListItem = new ObservableCollection<C3DGallery>();
}
}
[Serializable()]
public class C3DGalleryFolder : C3DGallery
{
public C3DGalleryFolder(string sName)
{
Name = sName;
ListItem = new ObservableCollection<C3DGallery>();
}
}
[Serializable()]
public class C3DGalleryItems : C3DGallery
{
public C3DGalleryItems()
{
Name = "";
ListItem = new ObservableCollection<C3DGallery>();
}
}
[Serializable()]
public class C3DGalleryItem : C3DGallery
{
public string ImagePath { get; set; }
public object Item { get; set; }
public C3DGalleryItem(object oItem, string sName, string sImagePath)
{
Name = sName;
ImagePath = "";
Item = oItem;
if (File.Exists(sImagePath)) { ImagePath = sImagePath; }
}
}