我被要求基于 SDK 中的基本 TreeView 创建自定义 TreeView。一切正常,问题是:节点/叶子不会延伸到它们的内容,它们的宽度总是相同的。这是 xaml 标记:
<Grid xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' xmlns:sdk='http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk'>
<Grid.Resources>
<Style x:Key='TreeViewChildStyle' TargetType='sdk:TreeViewItem'>
<Setter Property='HorizontalContentAlignment' Value='Stretch'/>
<Setter Property='Background' Value='Blue'/>
</Style>
<sdk:HierarchicalDataTemplate x:Key='ChildTemplate' x:Name='ChildTemplate'>
<TextBlock HorizontalAlignment='Stretch' Text='{Binding Path=ChildPath}'/>
</sdk:HierarchicalDataTemplate>
<sdk:HierarchicalDataTemplate x:Key='NameTemplate' ItemsSource='{Binding Path= ChildrenCollectionPath}' x:Name='NameTemplate' ItemTemplate='{StaticResource ChildTemplate}'>
<TextBlock HorizontalAlignment='Stretch' Text='{Binding Path=ParentPath}' Width='1000'/>
</sdk:HierarchicalDataTemplate>
</Grid.Resources>
<sdk:TreeView Height='Auto' Background='Red' ItemContainerStyle='{StaticResource TreeViewChildStyle}' Name='treeView1' ItemTemplate='{StaticResource NameTemplate} VerticalAlignment='Stretch' HorizontalAlignment='Stretch' BorderThickness='0'/>
</Grid>
我已经尝试在后面的代码中设置 ItemContainer 宽度,将 TextBlocks 的宽度设置为“Auto”,在样式标记中设置 ItemContainer 宽度。没有任何效果,TreeViewItems 总是相同的宽度,而且太窄了。
编辑:是的,网格中添加了 SDK 命名空间,编辑器刚刚发生了一些事情,它没有显示,无法帮助。
Edit2: TreeView 实际上将其宽度更改为给定值,但是,它的 Items 仍然没有缩放。