我将居中的垂直堆栈面板居中放置在scrollviewer中,它显示了我的UI控件的动态集合:按钮/文本框/标签等,但是左右两边的可用空间很大。
我想简单:如果内容不可见(垂直滚动条可见),只需将其分成两列即可。
我尝试了以下代码:
<ScrollViewer Name="scroller"
VerticalScrollBarVisibility="Auto"
PanningMode="VerticalOnly"
CanContentScroll="True"
>
<ItemsControl x:Name="StreamsItemsControl" ItemsSource="{Binding UIControls}">
<ItemsControl.ItemsPanel>
<itemspaneltemplate>
<UniformGrid Name="uniGrid1">
<UniformGrid.Style>
<Style TargetType="UniformGrid">
<Setter Property="Columns" Value="1"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ComputedVerticalScrollBarVisibility,ElementName=scroller}" Value="Visible">
<Setter Property="Columns" Value="2"/>
</DataTrigger>
</Style.Triggers>
</Style>
</UniformGrid.Style>
</UniformGrid>
</itemspaneltemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
它可以完美工作,但有一件事情-它为每个UI控件都提供了巨大的单元格,但并不是每个人都需要它(例如,标签/文本块)。 这是统一网格的特征-所有单元的大小均相等。
有什么方法可以像stackpanel一样吗? (每个孩子都得到了他的空间,没有了)