【问题标题】:resize child content of element host with form resize使用表单调整大小调整元素主机的子内容大小
【发布时间】:2014-09-30 09:06:55
【问题描述】:

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

【问题讨论】:

  • 请发布一个无法正常工作的 XAML 示例,以便我们指出问题所在。
  • 完成,如果您还需要什么,请告诉我

标签: c# wpf visual-studio-2010


【解决方案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>

当然,除非您希望它们具有固定的高度或宽度。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 非常感谢,现在都整理好了
    猜你喜欢
    • 2020-02-21
    • 1970-01-01
    • 2013-05-26
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多