2013-05-12 28 views
0

说我有编码自定义Canvas这样的:如何将自定义控件的类放入另一个自定义控件中?

public class MyCustomControl : Canvas 
    { 
     public MyCustomControl() 
     { 
      this.Background = System.Windows.Media.Brushes.LightBlue; 
     } 
    } 

,我需要把其他自定义编码(自定义控件)Label里面和使用整个项目作为另一个项目ONE自定义控件。

我这样做:

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其他项目中。请参阅图片:
enter image description here
由于我在第一个项目中创建了自定义控件,因此我没有可以依赖的可视引用(如XAML设计窗口或其他任何东西),基本上通过查看所有元素被正确编码和可见。

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

回答

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 
    }); 
} 

如果您希望能够设计你的画布,加UserControl到您的第一个项目。

<UserControl ...> 
    <Canvas Background="LightBlue"> 
     <Label Width="100" Height="25" VerticalAlignment="Center" HorizontalAlignment="Center"> 
      Hello!! 
     </Label> 
    </Canvas> 
</UserControl> 
+0

太感谢你了! 现在就去测试它)编辑:它的工作!非常感谢Lisp;) – Ali 2013-05-13 09:45:18

相关问题