gpt4 book ai didi

wpf - 如何垂直对齐 XAML TreeView HierarchicalDataTemplate 中的项目符号?

转载 作者:行者123 更新时间:2023-12-01 14:59:19 26 4
gpt4 key购买 nike

当我的 TreeView 中的节点有多行时,TreeView 项目符号会垂直居中。

如何顶部对齐 TreeView 项目符号?

alt text http://www.deviantsart.com/upload/1uh2k8p.png

<pages:BasePage.Resources>
<data:HierarchicalDataTemplate x:Key="OutlineTemplate"
ItemsSource="{Binding OutlineDocumentObjects}">
<TextBlock Text="{Binding Line}"
TextWrapping="Wrap"
VerticalAlignment="Top"
Width="600"/>
</data:HierarchicalDataTemplate>
</pages:BasePage.Resources>

<StackPanel Style="{StaticResource StackPanelPageWrapperStyle}">
<tk:TreeView x:Name="TheTreeView"
ItemsSource="{Binding TheOutline.OutlineDocumentObjects}"
ItemTemplate="{StaticResource OutlineTemplate}">
</tk:TreeView>
</StackPanel>

最佳答案

好问题...当然,可以通过重新定义模板来完成,但这很痛苦...(如果您想这样做,请使用 StyleSnooper 或 ShowMeTheTemplate 提取模板并更改 VerticalAlignment ToggleButton)

另一种方法是继承TreeViewItem 并覆盖OnApply 方法。由于 ToggleButton 在默认模板中有一个名称(“Expander”),您可以找到它并应用您想要的 VerticalAlignment:

public class TopAlignedTreeViewItem : TreeViewItem
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
if (Template != null)
{
ToggleButton btn = Template.FindName("Expander", this) as ToggleButton;
if (btn != null)
{
btn.VerticalAlignment = VerticalAlignment.Top;
}
}
}
}

要让 TreeView 生成 TopAlignedTreeViewItem 而不是 TreeViewItem,您还需要制作自己的 TreeView :

public class TopAlignedTreeView : TreeView
{
protected override bool IsItemItsOwnContainerOverride(object item)
{
return (item is TopAlignedTreeViewItem);
}

protected override System.Windows.DependencyObject GetContainerForItemOverride()
{
return new TopAlignedTreeViewItem();
}
}

关于wpf - 如何垂直对齐 XAML TreeView HierarchicalDataTemplate 中的项目符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2957533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com