0

假设我编写了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;
            }
        }
    }

但是我看不到Label其他项目的内部。看图片:
在此处输入图像描述
因为我在第一个项目中创建了一个自定义控件,所以我没有可以依赖的视觉参考(如 XAML 设计窗口或其他任何东西),基本上是通过看到所有元素都正确编码和可见.

首先,我不知道这是否是创建嵌套自定义控件的正确方法。其次,我不知道为什么标签没有显示在那里。可能是因为我必须将它添加到画布中。但我不知道将标签添加到其父级(即画布)的代码。

4

1 回答 1

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>
于 2013-05-12T22:51:50.200 回答