gpt4 book ai didi

wpf - 如何在 XAML 中设置项目的高度,以便它们始终占据父 ItemsControl 中相同比例的可用空间?

转载 作者:行者123 更新时间:2023-12-05 09:00:18 26 4
gpt4 key购买 nike

我有一个带有以下 ItemTemplate 的 ItemsControl:

<DataTemplate x:Key="myItemTemplate">
<TextBlock Height="???" Text="{Binding Path=Description}" />
</DataTemplate>

我的问题是,如何在模板中设置 TextBlock 的高度,以便它自动采用 ItemsControl.Height div ItemsCount 垂直空间量?

当只有一个项目时,我希望它是容器的全高,当有两个时,每个应该是容器的一半大小,依此类推。

如果可能,我更愿意完全在 XAML 中执行此操作,以保持我的 ViewModel 没有 UI 逻辑。

最佳答案

你可以使用 UniformGrid作为你的ItemsPanelTemplate并绑定(bind) Rows ItemsControl 中项目数的属性,像这样:

<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="{Binding Items.Count, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}}" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>

我没有测试这段代码,所以你需要检查一下,但我认为思路很清楚。

编辑:正如下面约翰所指出的,这段代码更简单:

<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="1" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>

关于wpf - 如何在 XAML 中设置项目的高度,以便它们始终占据父 ItemsControl 中相同比例的可用空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470477/

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