我有一个应用程序可以在用户控件之间进行大量切换,我希望它们可以扩展到窗口的最大大小,但有些东西会阻止它们这样做,从而占用尽可能少的空间。
我注意到我在usercontrols中的组件应该调整大小(即锁定到控件底部的按钮保持原位,控件只是没有到达窗口的底部,按钮最终应该在那里结束)和我没有在它们上设置任何与尺寸相关的属性(我尝试了几个,但没有一个具有预期的效果)。所以我假设问题在于显示控件的主要组件。这样设置如下:
<Window.Resources>
<DataTemplate DataType="{x:Type vm:MessageViewModel}">
<vw:MessageView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ConnectionsViewModel}">
<vw:ConnectionView/>
</DataTemplate>
...
</Window.Resources>
<Grid>
<ItemsControl ItemsSource="{Binding ViewModels}" Margin="0,20,0,0"/>
...
</Grid>
我使用的解决方案归功于Erno:
更改
<ItemsControl ItemsSource="{Binding ViewModels}" Margin="0,20,0,0"/>
到
<ItemsControl ItemsSource="{Binding ViewModels}" Margin="0,20,0,0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
答案 0 :(得分:7)
ItemsControl将项目放在ItemTemplate中,并将它们放在ItemsPanel中。
可以通过设置ItemsPanelTemplate来调整ItemsPanel。
默认情况下,ItemsPanel是StackPanel(垂直),StackPanels不会垂直分布行/拉伸项目。
所以你可以做的是在ItemsPanelTemplate中放置一个不同的控件,它可以根据需要拉伸和对齐项目。