ContentControl中的UserControl具有嵌套的宽度/高度

jim*_*zer 7 c# xaml windows-store-apps

我正在使用Caliburn Micro开发Windows应用商店应用.

在我的一个页面中ContentControl,显示哪个UserControl.在UserControl我有GridView.

我的问题是:如何设置UserControl.Width相同ContentControl.Width
注意:磨机设置UserControl.Width=Auto- 宽度相同GridView.Width

在page.xaml中

<ContentControl x:Name="ActiveItem" />
Run Code Online (Sandbox Code Playgroud)

在usercontrol.xaml中

<UserControl
x:Class="Test.Views.GroupView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" Width="Auto" Height="Auto">

    <Grid Margin="0,20">
        <GridView x:Name="Groups" Margin="0" />
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)



UPDATE

添加

  VerticalAlignment="Stretch"
  HorizontalAlignment="Stretch"
Run Code Online (Sandbox Code Playgroud)

UserControl解决不了问题.

小智 13

经过大量的试验和错误后想出来:

<ContentControl Name="MyContent" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
Run Code Online (Sandbox Code Playgroud)

关键是使用水平/垂直*内容*对齐属性(而不是水平/垂直对齐属性).


jim*_*zer 2

特别是对于@AlexeiMalashkevich,
我使用这样的绑定来解决它:

在根页面中,您有:

 <ContentControl x:Name="ActiveItem"/>
Run Code Online (Sandbox Code Playgroud)

然后添加子页面:

<Page
    Height="{Binding ActualHeight, ElementName=ActiveItem}"
    Width="{Binding ActualWidth, ElementName=ActiveItem}"
    ......
/>
Run Code Online (Sandbox Code Playgroud)

就这样。