我有一个在用户控件之间切换的应用程序,我希望它们拉伸(stretch)到窗口的最大大小,但是有些东西阻止了它们这样做,而是占用了尽可能少的空间。

我注意到我的用户控件内的组件会按照它们应该的方式调整大小(即锁定在控件底部的按钮保持原位,控件只是没有到达窗口底部,按钮最终应该在那里结束)并且我没有t 在它们上设置任何与大小相关的属性(我尝试了几个,但没有一个达到预期的效果)。所以我假设问题出在显示控件的主要组件上。是这样设置的:

<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>

最佳答案

ItemsControl 将项目放入 ItemTemplate 并将它们放入 ItemsPanel。

可以通过设置 ItemsPanelTemplate 来调整 ItemsPanel。

默认情况下,ItemsPanel 是 StackPanel(垂直)并且 StackPanels 不会垂直分布行/拉伸(stretch)项目。

所以你可以做的是在 ItemsPanelTemplate 中放置一个不同的控件,它可以根据需要拉伸(stretch)和对齐项目。

关于wpf - 如何让 WPF 组件占用所有可用空间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10653677/

10-08 20:35