2016-06-28 55 views
0

我有一個UserControl,它將在運行時加載到ContentControl中。 即使我沒有設置寬度和高度,用戶控件也不會將其大小調整爲父級控件。我錯過了什麼?動態添加UserControl不會調整爲父級大小

 <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中的大小變化。

當我現在所擁有的用戶控件更換標籤的用戶控件的大小具有爲MAXSIZE這裏面

在這裏,標籤的位置的用戶控件

<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

你的標籤對齊到容器左上角他們的價值,所以它可能只是看上去如此。你應該抓住Snoop並在運行時檢查你的UI,看看它是如何佈局的。 – Will

+0

謝謝你的迴應。第二個代碼示例中的標籤不是問題。 UserControl本身並不是父ContentControl的完整大小。如果我給網格一個背景顏色......它表明它只有在標籤結束時纔會着色。真正的問題是,我在我的完整代碼中有一個ListView,在這個UserControl裏面,並且希望這是一個完整的寬度,並且使用完整的高度(而不需要改變它的頂部和左邊......)。但顯然,UserControl不會擴大其父項的大小,因此usercontrols的子項不會擴展 – freeskydiver

+0

ListViews是關於此的PITA。您必須專門設置[橫向和縱向內容對齊](https://msdn.microsoft.com/en-us/library/system.windows.controls.control.horizo​​ntalcontentalignment%28v=vs.110%29。 aspx?f = 255&MSPPError = -2147217396),否則他們的子女不佔用所有可用空間。與其試圖配對你的代碼,不如創建一個[mcve]來重現你的問題,並將其放入一個[編輯] – Will

回答

0

你是使用HorizontalAlignmentVerticalAlignment告訴WPF 「只用它需要的大小繪製這個控件,然後根據這些規則將它在父容器中對齊」

因此,您的標籤正在繪製到所需的確切大小,然後放置在左上角。

如果你的代碼的頂部,使用的是HorizontalContentAlignmentVerticalContentAlignement,這意味着「對齊內容這個控制這樣的」

所以HorizontalContentAlignment="Center" VerticalContentAlignment="Center"會根據任何父容器的規則繪製標籤(聽起來就像在你的案例Stretch),然後標籤內的內容將位於中間。

因此,要麼改變你的Horizo​​nta/VerticalAlignment屬性,水平/ VerticalContentAlignment,或設置Stretch

+0

Ya中,這聽起來就像它。 – Will

相關問題