Silverlight中使用控件模板的问题(自己添加控件的方法)

一步一步学Silverlight 2系列(9):使用控件模板

WatermarkedTextBox控件可以为用户的输入提供一段提示信息,如果只是简单的一点文字信息,有时候未免显得单调,如果加上相应的图片说明效果会更好,如下图所示的一个简单的用户登录界面:

这样看起来界面显的就生动多了,XAML声明如下:

<Canvas Background="#46461F">
<WatermarkedTextBox x:Name="UserName" Canvas.Top="30" Canvas.Left="50"
Width
="320" Height="48">
<WatermarkedTextBox.Watermark>
<StackPanel Width="320" Height="48" Orientation="Horizontal">
<Image Source="admin.png" HorizontalAlignment="Left"></Image>
<TextBlock Text="请输入用户名" VerticalAlignment="Center" Foreground="#999999"/>
</StackPanel>
</WatermarkedTextBox.Watermark>
</WatermarkedTextBox>

<WatermarkedTextBox x:Name="Password" Canvas.Top="110" Canvas.Left="50"
Width
="320" Height="48" HorizontalAlignment="Left">
<WatermarkedTextBox.Watermark>
<StackPanel Width="320" Height="48" Orientation="Horizontal">
<Image Source="lock.png" HorizontalAlignment="Left"></Image>
<TextBlock Text="请输入密码" VerticalAlignment="Center" Foreground="#999999"/>
</StackPanel>
</WatermarkedTextBox.Watermark>
</WatermarkedTextBox>

<Button Canvas.Top="180" Canvas.Left="100"
Width
="120" Height="48">
<Button.Content>
<StackPanel Orientation="Horizontal">
<Image Source="apply.png" HorizontalAlignment="Left"></Image>
<TextBlock Text="登 录" VerticalAlignment="Center" Margin="10 0 0 0"></TextBlock>
</StackPanel>
</Button.Content>
</Button>
</Canvas>
可是我安装好Silverlight以后并没有WatermarkedTextBox这个控件 我直接打上WatermarkedTextBox会报错 说没有这个控件类型。
上网查了下,发现最早silverlight的版本中是有这个控件的,但是由于和WPF兼容的考虑,现在的版本好像删除了这个控件。但是如果我们要用的话也有办法。
那就是:有个第三方的,可以到http://s3.amazonaws.com/timheuer-img/WatermarkedTextBox-Binary.zip下载dll
下载好后自己导入控件。具体操作如下:

1.选择工具箱--常规(右击),选择“选择项”。

选择“Silverlight组件”--浏览

导入WatermarkedTextBox的dll到工程(Silverlight那个工程,而不是Asp.net网站那个工程)的应用中,并打钩:

此时查看“工具箱”的“常规”,就多了这个自己添加的控件:

2.在XAML文件中引用WatermarkedTextBox的代码如下:

    d:DesignHeight="300" d:DesignWidth="400" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls.WatermarkedTextBox">

3.使用WatermarkedTextBox如下:(注:自己定义的控件在前面要加“my:”)

    <Canvas Background="#46461F">
<my:WatermarkedTextBox x:Name="UserName" Canvas.Left="50" Canvas.Top="30" Height="48" Width="320">
<my:WatermarkedTextBox.Watermark>
<StackPanel Width="320" Height="48" Orientation="Horizontal">
<Image Source="/SilverlightApplication-New9;component/Images/admin.PNG" HorizontalAlignment="Left" />
<TextBlock Text="请输入用户名" VerticalAlignment="Center" Foreground="#999999" />
</StackPanel>
</my:WatermarkedTextBox.Watermark>
</my:WatermarkedTextBox>

<my:WatermarkedTextBox x:Name="Password" Canvas.Left="50" Canvas.Top="100" Height="48" Width="320">
<my:WatermarkedTextBox.Watermark>
<StackPanel Width="320" Height="48" Orientation="Horizontal">
<Image Source="/SilverlightApplication-New9;component/Images/lock.PNG" HorizontalAlignment="Left" />
<TextBlock Text="请输入密码" VerticalAlignment="Center" Foreground="#999999" />
</StackPanel>
</my:WatermarkedTextBox.Watermark>
</my:WatermarkedTextBox>
<Button Canvas.Left="100" Canvas.Top="180" Height="40" Width="110">
<Button.Content>
<StackPanel Orientation="Horizontal">
<Image Source="/SilverlightApplication-New9;component/Images/apply.PNG" HorizontalAlignment="Left"/>
<TextBlock Text="登入" VerticalAlignment="Center" Margin="10 0 0 0"></TextBlock>
</StackPanel>
</Button.Content>
</Button>
</Canvas>

4.运行效果图如下:


总结:本篇文章大致的示范了如何添加外部控件并实现其在ToolBox上所见即所得拖拽添加控件。其外展示了WatermarkedTextBox的使用效果。

posted @ 2011-07-14 19:41  然嗄  阅读(1184)  评论(2)    收藏  举报