我是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>
答案 0 :(得分:1)
如果您希望根据父元素大小调整项目大小,则必须记住,当未明确设置大小时,ontrols会隐式继承父级伸展行为。因此,要解决您的问题,您需要明确删除Width
和Height
设置:
<Grid>
<DataGrid AutoGenerateColumns="False" Name="dgEventViewerOptions" SelectionChanged="dgEventViewOptions_SelectionChanged" />
</Grid>
答案 1 :(得分:1)
在WPF中,此类行为通常由HorizontalAlignment
和VerticalAlignment
属性引起。省略这些属性会将它们设置为默认值"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>
当然,除非你希望它们有一个固定的高度或宽度。