`

Silverlight 控件之 WatermarkedTextBox

阅读更多

atermarkedTextBox这个控件存在与Silverlight2.0,但在3.0的时候别去掉了,估计微软是想在TextBox中用一个类似watermarked的属性来实现这个控件功能,但现在为止还没有看到类似属性。如果真想实现这个控件可以使用以下方法:

 

方法一:自己编写继承控件

public class WatermarkedTextBox : TextBox
    {
        public static readonly DependencyProperty DefaultTextProperty = DependencyProperty.Register("DefaultText", typeof(string), typeof(WatermarkedTextBox), new PropertyMetadata(""));
        public event EventHandler WatermarkedTextChanged;

        public WatermarkedTextBox()
        {
            base.TextChanged += new TextChangedEventHandler(this.OnWotermarkedTextBoxTextChanged);
        }

        public override void OnApplyTemplate()
        {
            base.Text = this.DefaultText;
            base.OnApplyTemplate();
        }

        protected override void OnGotFocus(RoutedEventArgs e)
        {
            if (string.Equals(base.Text, this.DefaultText, StringComparison.OrdinalIgnoreCase))
            {
                base.Text = string.Empty;
            }
            base.OnGotFocus(e);
        }

        protected override void OnLostFocus(RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(base.Text))
            {
                base.Text = this.DefaultText;
            }
            base.OnLostFocus(e);
        }

        private void OnWotermarkedTextBoxTextChanged(object sender, TextChangedEventArgs e)
        {
            if (!string.Equals(base.Text, this.DefaultText, StringComparison.OrdinalIgnoreCase))
            {
                if(this.WatermarkedTextChanged != null)
                    this.WatermarkedTextChanged(this, e);
            }
        }

        public string DefaultText
        {
            get
            {
                return (string)base.GetValue(DefaultTextProperty);
            }
            set
            {
                base.SetValue(DefaultTextProperty, value);
            }
        }
    }

 
方法二:将DLL添加引用到project类库,然后导入xaml(DLL见附件)

首先将DLL放置到硬盘的任意位置,建议放到工程目录下,然后添加引用到你的项目中,如下图:


 


 
然后在你xaml页面中的UserControl控件中加入如下代码:
xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls.WatermarkedTextBox"
 

 最后你就可以在xaml中引用WatermarkedTextBox控件了,代码如下:

<my:WatermarkedTextBox Name="txtSearchTopic" Grid.Column="1" FontSize="14" Watermark="Topic..." GotFocus="TextBox_GotFocus"/>

 

在xaml中引用控件详情请参考:

添加Silverligh控件引用

(http://lujinan858.iteye.com/admin/blogs/729771)



----------------------------------------------------
以下文章转自http://www.michaelsnow.com/2010/05/06/silverlight-tip-of-the-day-14-dynamically-loading-a-control-from-a-dll-on-a-server/

Dynamically Loading a Control from a DLL on a Server

In this tip I will be showing you how to load a Silverlight control from a DLL that is on a server somewhere. This technique is useful if you want the initial XAP download size of your application kept to a minimum. That is, the controls and resources you place in the DLL are items that you can download on demand when your application actually needs to load them.

To start, I will create a simple control that displays an image. This control will be packaged in a Silverlight class library DLL.

1. Open Visual Studio.

2. Create a new Silverlight application

3. Right click on the top node in your Solution Explorer. Choose  Add->New Project.

4. Select “Silverlight Class Library” and give it a name (mine is called TestCtrl). This project will create the DLL that will contain your control(s).

5. In your class library add a new a new Silverlight User Control (mine is called ImageTest).

6. Open up the XAML page (ImageTest.xaml) for this user control and add something like an Image control. If you are using a relative path to an image, make certain the image you reference is also included in your class library project.

 

<Image Source="scarlett.jpg"></Image>

At this point your class library DLL is good to go. Build the and place it on your server in a location you can reference. Note that after building the DLL you will find it in your projects Bin\Debug folder. Clicking the “Show all Files” in the toolbar for your Solution Explorer will make this bin folder visible.



 

7. Next, proceed to your Silverlight Application opening up MainPage.xaml.cs

8. Add a reference to System.Reflection;

9. Use the WebClient class to download the DLL from the server. From the purpose of this demo, I have placed my test DLL at http://www.flaired.com/TestCtrl.dll  

private Assembly _testCtrl; 

 

public MainPage() 

{ 

    InitializeComponent(); 

 

    WebClient downloader = new WebClient(); 

    string path = "http://www.flaired.com/TestCtrl.dll"; 

    downloader.OpenReadCompleted += new OpenReadCompletedEventHandler 

      (downloader_OpenReadCompleted);  

    downloader.OpenReadAsync(new Uri(path, UriKind.Absolute)); 

} 

 

void downloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 

{ 

    AssemblyPart assemblyPart = new AssemblyPart(); 

    _testCtrl = assemblyPart.Load(e.Result); 

    UserControl control = (UserControl) 

    _testCtrl.CreateInstance("TestCtrl.ImageTest"); 

    LayoutRoot.Children.Add(control); 

}

 

10. Before you run this code, as a final step, make certain to have a ClientAccessPolicy.xml file located in the same location as your DLL. Silverlight will look for this file for permissions when making calls cross-domain. By default Silverlight only allows site-of -origin communication.

<?xml version="1.0" encoding="utf-8"?> 

<access-policy> 

  <cross-domain-access> 

    <policy> 

      <allow-from http-request-headers= "*"> 

        <domain uri="*"/> 

      </allow-from> 

      <grant-to> 

        <resource path="/" include-subpaths="true"/> 

      </grant-to> 

    </policy> 

  </cross-domain-access> 

</access-policy>

 
  • 大小: 5.5 KB
  • 大小: 12.5 KB
  • 大小: 17 KB
分享到:
评论

相关推荐

    SilverLight 3 的 WatermarkedTextBox 控件[源码]

    在本文中,我们将深入探讨Silverlight 3中的WatermarkedTextBox控件,以及如何在该版本中自定义此类控件,因为官方默认不提供。WatermarkedTextBox是一个非常实用的UI元素,它允许用户在输入文本前看到一个提示性的...

    Silverlight控件

    Silverlight控件是微软推出的一种富互联网应用程序(RIA)开发技术,它允许开发者创建具有丰富图形、动画和交互性的Web应用。本教程针对初学者,将深入讲解Silverlight的基本概念、控件的使用以及如何通过源码实践来...

    SilverLight控件(详细)

    SilverLight入门级的控件说明,需要实例,联系QQ 853466904

    必应地图Silverlight控件

    必应地图Silverlight控件是微软提供的一种用于在Web应用中集成地图功能的开发工具,主要基于Silverlight技术。这个控件允许开发者轻松地在网页上嵌入交互式的地图,提供丰富的地图操作和视觉效果。在给定的压缩包...

    Silverlight控件可拖拽示例代码

    Silverlight控件可拖拽示例代码 Silverlight控件可拖拽示例代码Silverlight控件可拖拽示例代码Silverlight控件可拖拽示例代码 Silverlight控件可拖拽示例代码 Silverlight控件可拖拽示例代码

    Silverlight 控件使用实例

    Silverlight(3) - 2.0控件之Border, Button, Calendar, Canvas, CheckBox, ComboBox 介绍 Silverlight 2.0 控件一览:Border, Button, Calendar, Canvas, CheckBox, ComboBox 2、Silverlight(4) - 2.0控件之...

    silverlight 时钟控件

    silverlight 时钟 控件silverlight 时钟 控件silverlight 时钟 控件silverlight 时钟 控件silverlight 时钟 控件silverlight 时钟 控件silverlight 时钟 控件

    为Silverlight创建自定义控件

    在本文中,我们将深入探讨如何在Silverlight 2中创建自定义控件,这是一个关键的开发技能,可以让你根据特定需求扩展和定制UI组件。Silverlight的控件模型提供了丰富的可扩展性,允许开发者构建高度专业化和交互性的...

    如何在Silverlight控件中与Html元素交互

    在某些场景下,我们可能需要在Silverlight控件中与HTML元素进行交互,以便实现更复杂的网页功能。本文将详细介绍如何在Silverlight中实现与HTML元素的交互。 首先,理解Silverlight与HTML的运行环境至关重要。...

    简单的Silverlight 自定义控件源码

    在本文中,我们将深入探讨如何创建一个简单的Silverlight自定义控件,这将基于提供的"MediaButton_src"压缩包中的源代码。Silverlight是微软推出的一种富互联网应用程序(RIA)平台,它允许开发者构建交互性强、用户...

    非常漂亮的Silverlight分页控件

    在这个场景下,我们讨论的是一个“非常漂亮的Silverlight分页控件”,这是一个专门用于在大量数据展示时进行分页导航的UI组件。 分页控件在数据管理中扮演着重要角色,特别是在处理大数据集时,它可以将数据分割...

    Silverlight控件应用程序

    Button控件是Silverlight中最基本的交互元素之一,用户可以通过点击按钮来执行特定的操作或触发事件。在XAML中,我们可以这样定义一个按钮: ```xml 点击我" Click="Button_Click"/&gt; ``` 这里,`Content`属性定义了...

    silverlight 显示gif动画控件,附例子

    这是因为Silverlight的Image控件只能显示静态图像,而不能处理多帧的动画内容。因此,开发者需要寻找其他方式来实现在Silverlight应用中播放GIF动画。 ### 第三方控件解决方案 为了解决这个问题,开发者通常会依赖...

    Silverlight 自定义控件 模板化控件 (二)事件

    在本文中,我们将深入探讨Silverlight中的自定义控件,特别是关于模板化控件和事件的处理。在Silverlight开发中,自定义控件能够帮助我们实现特定的功能,提升用户体验,而模板化则是让控件外观和行为更具可定制性。...

    Silverlight控件库 Divelements.SandRibbon破解DLL

    Silverlight控件库Divelements.SandRibbon破解版,有了它第三控件就极大丰富了,哈哈

    silverlight控件实现立体翻转效果

    在本文中,我们将深入探讨如何使用Silverlight控件来实现立体翻转效果。Silverlight是一种由微软开发的富客户端技术,用于创建具有丰富媒体体验和交互性功能的Web应用程序。结合Visual Studio 2010和Blend 4,开发者...

    一本关于silverlight控件的好书

    《Apress - Pro Telerik ASP.NET and Silverlight Controls》是一本专为深入理解Telerik公司提供的ASP.NET和Silverlight控件而编写的书籍。这本书详细介绍了如何利用这些强大的工具来构建功能丰富的、用户友好的Web...

    用asp.net的silverlight控件做播放器例子

    在本文中,我们将深入探讨如何使用ASP.NET的Silverlight控件来创建一个功能丰富的播放器应用。Silverlight是微软推出的一种强大的富互联网应用程序(RIA)平台,它允许开发者构建具有丰富媒体体验和交互性的Web应用...

Global site tag (gtag.js) - Google Analytics