使用表单调整大小调整元素主机的子内容

时间:2014-09-30 09:06:56

标签: c# wpf visual-studio-2010

我是WPF的新手,我必须为我的工作做一些工作。我有一个包含3个元素主机的表单,每个主机都有自己的子控件。我需要子控件使用表单调整大小,以便在表单生长和缩小时使用。

只有元素主机本身似乎有锚属性,这是我理解我需要操纵来实现这一点。如何让子控件调整大小以及元素主机,或者我这样做完全错了? 任何帮助都会很棒。

我已经使用标准文本框控件进行了测试,并将其Anchor属性设置为Top,Left,Bottom正常工作。我不明白为什么它不适用于元素主机内容

<UserControl x:Class="MyControls.ucEventViewerOptions"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/,arkup-compatibility/2006"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        mc:Ignorable="d"
        d:DesignHeight="297" d:DesignWidth="128" Loaded="UserControl_Loaded">
    <Grid Width="96" Height="288">
        <DataGrid AutoGenerateColumns="False" Height="288" HorizontalAlignment="Left" Name="dgEventViewerOptions" VerticalAlignment="Top" Width="96" SelectionChanged="dgEventViewOptions_SelectionChanged" />
    </Grid>
 </UserControl>

2 个答案:

答案 0 :(得分:1)

如果您希望根据父元素大小调整项目大小,则必须记住,当未明确设置大小时,ontrols会隐式继承父级伸展行为。因此,要解决您的问题,您需要明确删除WidthHeight设置:

<Grid>
   <DataGrid AutoGenerateColumns="False" Name="dgEventViewerOptions" SelectionChanged="dgEventViewOptions_SelectionChanged" />
</Grid>

答案 1 :(得分:1)

在WPF中,此类行为通常由HorizontalAlignmentVerticalAlignment属性引起。省略这些属性会将它们设置为默认值"Stretch",并允许控件相对于其父容器调整大小。但是,只有在未使用固定大小分配控件时才可以这样做。

在您的情况下,您可以简单地省略这些属性:

<UserControl x:Class="MyControls.ucEventViewerOptions"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/,arkup-compatibility/2006"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        mc:Ignorable="d"
        d:DesignHeight="297" d:DesignWidth="128" Loaded="UserControl_Loaded">
    <Grid>
        <DataGrid AutoGenerateColumns="False" Name="dgEventViewerOptions" SelectionChanged="dgEventViewOptions_SelectionChanged" />
    </Grid>
</UserControl>

当然,除非你希望它们有一个固定的高度或宽度。