gpt4 book ai didi

c# - SizeToContent.Width 和 TreeView

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:29 36 4
gpt4 key购买 nike

我有一个包含三个不同控件的网格,两个是组框,第三个是 TreeView 。我不知道初始宽度,所以 Window.SizeToContent 设置为“宽度”一切都完美地适合窗口,当我从 TreeView 扩展一个节点时,问题来了,Window.Width 调整到 treeView 完美适合的新宽度,但其余控件不是那么好。

我想保留 SizeToContent 给出的“原始”宽度,并在扩展 treeViewNode 而不是更改整个 Window.Width 时获得一个 ScrollBar

这是 xaml(只有主网格和 TreeView )

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>

<!--Attachments-->
<GroupBox x:Name="gbAttachments" Header="Attachments" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" HorizontalContentAlignment="Stretch">

<TreeView x:Name="tvAttachments" BorderThickness="0" ScrollViewer.HorizontalScrollBarVisibility="Visible" />

</GroupBox>
<!--Attachments-->
</Grid>

我尝试使用 ColumnDefinition.Width = "*"、Horizo​​ntalContentAlignment 和许多其他不同的方法,我还尝试将它放在 ScrollbarViewer 中,但似乎没有任何效果。总是当我扩展节点时,整个窗口都会用节点的内容扩展(实际上它很长)。我很确定问题出在 Window.SizeToContent = 'Width' 但如果我不知道原始宽度,我还能为其余控件做些什么?任何想法,提前致谢!

--编辑

好吧,解决方案比预期的要容易,在 Window_Loaded 事件中,我得到 gbAttachments.ActualWidth 并将其分配给 TreeView.MaxWidth不漂亮,很确定它可以通过 xaml 完成,但它正在工作。

最佳答案

您可以尝试设置树中节点的 MaxWidth 属性:

<Style TargetType="TreeViewItem">
<Setter Property="MaxWidth" Value="80"></Setter>
</Style>

或者,您可以将此值绑定(bind)到某些东西,例如另一个元素:

<Style TargetType="TreeViewItem">
<Setter Property="MaxWidth"
Value="{Binding ElementName=gbAttachments, Path=ActualWidth}"></Setter>
</Style>

此外,如果您担心窗口在初始化后不需要自动调整大小,您可以尝试在代码后面做一些事情,以便自动调整仅在窗口初始化时发生:

public MainWindow()
{
InitializeComponent();

// auto-size width, and save off value
this.SizeToContent = System.Windows.SizeToContent.Width;
var actualWidth = this.ActualWidth;
// manual-size width
this.SizeToContent = System.Windows.SizeToContent.Manual;
// set value to what it was, when auto-sized
this.Width = actualWidth;
}

关于c# - SizeToContent.Width 和 TreeView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169670/

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