说我已经编码了这样的自定义Canvas
:
public class MyCustomControl : Canvas
{
public MyCustomControl()
{
this.Background = System.Windows.Media.Brushes.LightBlue;
}
}
我需要在其中放入另一个自定义编码(自定义控件)Label
,并将整个项目用作另一个项目中的一个自定义控件。
我这样做了:
public class MyCustomControl : Canvas
{
public MyCustomControl()
{
this.Background = System.Windows.Media.Brushes.LightBlue;
}
//My custom label
public class MyLabel : Label
{
public MyLabel()
{
Content = "Hello!!";
Width = 100;
Height = 25;
VerticalAlignment = System.Windows.VerticalAlignment.Center;
HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
}
}
}
但我没有看到OTHER项目中的Label
。见图:
因为我在第一个项目中创建了一个自定义控件,所以我没有视觉参考(比如XAML设计窗口或其他任何东西),我可以依赖它,基本上看到所有元素都被正确编码和可见。
首先,我不知道它是否是创建嵌套自定义控件的正确方法。 第二,我不知道为什么标签没有在那里显示。可能是因为我必须将它添加到画布中。但是我不知道将标签添加到它的父级的代码,即画布。
答案 0 :(得分:1)
将标签添加到画布:
public MyCustomControl()
{
this.Background = System.Windows.Media.Brushes.LightBlue;
this.Children.Add(new MyLabel());
}
但在这种情况下,您不需要自定义标签:
public MyCustomControl()
{
this.Background = System.Windows.Media.Brushes.LightBlue;
this.Children.Add(new Label{
Content = "Hello!!",
Width = 100,
Height = 25,
VerticalAlignment = System.Windows.VerticalAlignment.Center,
HorizontalAlignment = System.Windows.HorizontalAlignment.Center
});
}
如果您想设计Canvas,请将UserControl添加到您的第一个项目中。
<UserControl ...>
<Canvas Background="LightBlue">
<Label Width="100" Height="25" VerticalAlignment="Center" HorizontalAlignment="Center">
Hello!!
</Label>
</Canvas>
</UserControl>