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.运行效果图如下:
浙公网安备 33010602011771号