我有一个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>
答案 0 :(得分:0)
您正在使用HorizontalAlignment
和VerticalAlignment
告诉WPF &#34;仅使用所需的大小绘制此控件,然后根据这些规则将其与父容器对齐#34 ;
因此,您的标签会被绘制到所需的确切尺寸,然后放在左上角。
如果是您的代码的顶部,您使用的是HorizontalContentAlignment
和VerticalContentAlignement
,这意味着&#34;将内容对齐这个控件就像这样&# 34; 。
所以HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
会根据父容器的规则绘制标签(听起来像你的情况Stretch
),然后标签内的内容会定位在中间
因此,要么将Horizonta / VerticalAlignment属性更改为Horizontal / VerticalContentAlignment,要么设置它们的值Stretch