如何在ContentControl中更改Content属性

时间:2018-05-21 09:08:00

标签: c# xaml uwp uwp-xaml

我有自定义ContentControl

public class MyContentControl: ContentControl
{....}

在XAML中定义内容,如此

    <controls:MyContentControl x:Name="myContentControl">
        <controls:MyContentControl.Content>
            <controls:UserControl1 />
        </controls:MyContentControl.Content>
    </controls:MyContentControl>

当我启动应用程序时,内容会在设计器和设备中显示。但是当我尝试以编程方式更改Content属性时,例如

        UserControl2 control2 = new UserControl2();            
        myContentControl.Content = control2;

MyContentControl什么都没显示。使用标准ContentControl可以得到相同的结果。 欢迎任何建议。

2 个答案:

答案 0 :(得分:1)

这应该有效。原因可能是控件没有拉伸,并且大小只显示为0x0。尝试将绝对WidthHeight设置为control2并检查是否显示。您还可以设置myContentControl.HorizontalContentStretchmyContentControl.VerticalContentStretch

您可以尝试在调试器中运行应用程序,然后使用Live Property Explorer查看Content内控件的实际大小。

答案 1 :(得分:1)

我按照您的代码制作了简单的代码示例进行测试。没问题。

public class CustomContentControl:ContentControl
{//......}

<Grid>
    <local:CustomContentControl x:Name="content">
    </local:CustomContentControl>
</Grid>
MyUserControl1 myUserControl1 = new MyUserControl1();
content.Content = myUserControl1;
<UserControl
x:Class="AppContent.MyUserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:AppContent"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">

<Grid>
    <TextBox Text="abc"></TextBox>
</Grid>

您可能已在代码中完成了一些特定设置。 @Martin Zikmund的建议也很合理。您可以参考他的建议并检查您的代码。在此之后,如果您仍然无法解决此问题,请提供Minimal, Complete, and Verifiable example

enter image description here