我有自定义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可以得到相同的结果。 欢迎任何建议。
答案 0 :(得分:1)
这应该有效。原因可能是控件没有拉伸,并且大小只显示为0x0。尝试将绝对Width
和Height
设置为control2
并检查是否显示。您还可以设置myContentControl.HorizontalContentStretch
和myContentControl.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。