原文地址:http://www.cnblogs.com/limo/archive/2010/12/14/1905172.html
1,新建一个Silverlight Application,里面会有一个MainPage.xaml文件 和对应的MainPage.xaml.cs文件,随便在xaml中写点什么
例如我写了点这个,下面是MainPage.xaml全部代码
01 |
<UserControl x:Class= "UserControlDemo.MainPage" |
07 |
d:DesignHeight= "300" d:DesignWidth= "400" > |
09 |
<Grid x:Name= "LayoutRoot" Background= "White" > |
10 |
<StackPanel Height= "86" HorizontalAlignment= "Left" Margin= "94,90,0,0" Name= "stackPanel1" VerticalAlignment= "Top" Width= "200" > |
11 |
<TextBlock Height= "36" Name= "myTextBlock" Text= "默认值" /> |
12 |
<Button Content= "Button" Height= "23" Name= "myBtn" Width= "75" /> |
2,在项目下 再添加一个Silverlight Page 页面 或者 Silverlight User Control 都行 ,我添加了一个Page.并且导入了一个命名空间xmlns:myUserControl="clr-namespace:UserControlDemo", 其中myUserControl是个名字可以随便写. 这样就能在这个页面中引用UserControlDemo这个命名空间中的类了.所以我在Page这页面的Grid中可以用到MainPage这个类了.
下面是Page.xaml的代码
01 |
<navigation:Page x:Class= "UserControlDemo.Page1" |
02 |
xmlns:myUserControl= "clr-namespace:UserControlDemo" |
08 |
xmlns:navigation= "clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" |
09 |
d:DesignWidth= "640" d:DesignHeight= "480" |
11 |
<Grid x:Name= "LayoutRoot" > |
12 |
<myUserControl:MainPage x:Name= "demoUserControl" Msg= "UserControlDemo" ></myUserControl:MainPage> |
这时会发现 我在用MainPage 这个类的时候 有一个Msg 属性,这个属性不是silverlight 类中的,那很显然 就是自己给MainPage 加的属性.
代码如下
01 |
namespace UserControlDemo |
03 |
public partial class MainPage : UserControl |
09 |
myTextBlock.Text = value; |
13 |
return myTextBlock.Text; |
18 |
InitializeComponent(); |
的确是咱自己加的属性,只不过这个属性的值会在MainPage.xaml的Textblock中显示.
差点忘了,最后把VS自动生成的App.xaml.cs里面的启动函数修改一下,启动页改成Page.
1 |
private void Application_Startup( object sender, StartupEventArgs e) |
4 |
this .RootVisual = new Page1(); |
不知不觉 你就会发现 其实 这就是自定义控件的开始.