动态添加的UserControl不会调整为父级大小

时间:2016-06-28 13:35:04

标签: wpf xaml size fill contentcontrol

我有一个UserControl,它将在运行时加载到ContentControl中。 即使我没有设置Width也不设置Wight,用户控件也不会将其大小调整为父控件。我错过了什么?

        <ContentControl x:Name="MainContentControl" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" >
        <Label  Background="LightGray" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" >Sample control </Label>
    </ContentControl>

ContentControl中的样本控件(标签)工作正常,并根据ContentControl的大小更改进行扩展。

当我现在用UserControl替换Label时,Usercontrol的大小为maxsize其内部标签的位置

这里是UserControl

<UserControl x:Class="test.testUserControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
    <Label Content="Label" HorizontalAlignment="Left" Margin="235,200,0,0" VerticalAlignment="Top"/>
</Grid>

1 个答案:

答案 0 :(得分:0)

您正在使用HorizontalAlignmentVerticalAlignment告诉WPF &#34;仅使用所需的大小绘制此控件,然后根据这些规则将其与父容器对齐#34 ;

因此,您的标签会被绘制到所需的确切尺寸,然后放在左上角。

如果是您的代码的顶部,您使用的是HorizontalContentAlignmentVerticalContentAlignement,这意味着&#34;将内容对齐这个控件就像这样&# 34;

所以HorizontalContentAlignment="Center" VerticalContentAlignment="Center"会根据父容器的规则绘制标签(听起来像你的情况Stretch),然后标签内的内容会定位在中间

因此,要么将Horizo​​nta / VerticalAlignment属性更改为Horizo​​ntal / VerticalContentAlignment,要么设置它们的值Stretch