我們可以編寫代碼來建立自己定義的行為(Behavior)并在Expression Blend中調用自定義的行為。
我們需要從Behavior類繼承,最簡單的自定義行為的代碼如下:
<a href="http://blog.51cto.com/attachment/201105/172014790.jpg" target="_blank"></a>
DependencyObject 為依賴屬性,比如可以為TextBox,然後重寫基類的兩個方法OnAttached() 和OnDetaching() 。
我們也可以在行為中包含指令。
允許使用者自定義行為功能的一種方式是公開 Commands (類型為 ICommand 的任何屬性),其中每個指令都對應于 Behavior 可執行的一項操作。首先,請確定項目同時引用了 Microsoft.Expression.Interactions 和 System.Windows.Interactivity DLL。
修改上面的代碼,如下
<a href="http://blog.51cto.com/attachment/201105/172116729.jpg" target="_blank"></a>
下面是MSDN描述Commands和Behaviors是如何協同工作的
<a href="http://blog.51cto.com/attachment/201105/172141482.png" target="_blank"></a>
下面我們以一個具體的Demo來建立自己的自定義行為。
建立Silverlight應用程式,命名為MyBehavior,
<a href="http://blog.51cto.com/attachment/201105/172234387.jpg" target="_blank"></a>
在編寫Behavior之前,先要添加Interactivity的引用
<a href="http://blog.51cto.com/attachment/201105/172312351.jpg" target="_blank"></a>
然後我們重新OnAttached()和OnDetaching()方法
<a href="http://blog.51cto.com/attachment/201105/172336678.jpg" target="_blank"></a>
輸入AssociatedObject,即與行為相關的對象,他有一些屬性、事件
<a href="http://blog.51cto.com/attachment/201105/172401275.jpg" target="_blank"></a>
我們這裡寫一些字段,如下圖:
<a href="http://blog.51cto.com/attachment/201105/172432410.jpg" target="_blank"></a>
然後編寫OnAttached事件,注冊了keydown、GotFocus和LostFocus事件
<a href="http://blog.51cto.com/attachment/201105/172458289.jpg" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201105/172522170.jpg" target="_blank"></a>
然後我們就可以在我們的SL應用程式中調用剛剛建立的行為了。
首先需要在XAML代碼中添加因為,如下圖
<a href="http://blog.51cto.com/attachment/201105/172553452.jpg" target="_blank"></a>
其他的XAML代碼如下:
<a href="http://blog.51cto.com/attachment/201105/172613974.jpg" target="_blank"></a>
最後,運作程式,效果如下
代碼下載下傳:
<a target="_blank" href="http://blog.51cto.com/attachment/201105/2621421_1306402023.rar"></a>
<a href="http://down.51cto.com/data/2358235" target="_blank">附件:http://down.51cto.com/data/2358235</a>
本文轉自xshf12345 51CTO部落格,原文連結:http://blog.51cto.com/alexis/574824,如需轉載請自行聯系原作者