WPF强制UserControl扩展以填充最大渲染大小

时间:2015-06-24 12:38:01

标签: c# wpf user-interface layout contentcontrol

我需要创建一个UserControl,它托管在一个“父”ContentControl中,该内容设置为“中心”水平和垂直对齐。

这个控件托管另一个“子”UserControl,我希望它尽可能大,而不会超出可渲染的大小。

我注意到如果我将孩子的大小设置为大于可渲染的大小,我会得到我想要的大小作为该控件上的“DesiredSize”属性。 但是我没有看到如何在不超出控制范围的情况下获得该信息。

我已经创建了这个示例以说明情况,我希望“ChildControl”的粉红色背景可以覆盖整个窗口。

为了澄清,我只能控制“ControlableElementA”和“ControlableElementB” 我无法绑定到主窗口,在实际应用程序中,我将其用作嵌入式窗口,其间具有不同级别的层次结构。

由于我之上的限制,“ChildControl”和“ParentControl”超出了我的范围。

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="300" Width="300">
    <Grid>
        <ContentControl Name="ParentControl" HorizontalAlignment="Center" VerticalAlignment="Center">
            <Grid Name="ControlableElementA" Background="Black" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                <ContentControl Name="ControlableElementB">
                    <Grid Name="ChildControl" Background="Pink" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                        <Button Width="30" Height="30"></Button>
                    </Grid>
                </ContentControl>
            </Grid>
        </ContentControl>
    </Grid>
</Window>

非常感谢,如果描述有点神秘,我道歉

1 个答案:

答案 0 :(得分:2)

<video width="320" height="240" src="https://www.youtube.com/watch?v=dwH34mR6ZG8" controls="controls"> </video> JsonConvert.SerializeObject( new{ MyModel = model}) HorizontalAlignment表示&#34;拉伸到父容器范围内的最大尺寸。&#34; < / p>

但是,您的父容器设置为VerticalAlignment,这意味着您的Stretch实际上有Center宽度和高度。

要解决此问题,只需删除:

UserControl

来自Auto