在寫自定義控制元件的時候,有一部分功能是當內部的值發生變化時,需要通知控制元件的使用者,而當我在寫依賴項屬性的時候,我可以通過popdp對應的代碼模板來完成對應的代碼,但是當我來寫屬性更改回呼的時候,卻發現沒有對應的RoutedEvent,導致需要手擼那么多的代碼,而很多時候一旦專案中趕進度,也許就會因為這個原因,把VM下的邏輯放到了UserContorl里了,(我review別人的代碼時,發現了好多這種現象,但是邏輯都寫完了,改動又太大,而且可能他們一直處于加班狀態,我也不好意思在指出這些問題),所以這一篇是寫使用代碼模板輔助我們寫UserControl時更好的解耦,下一篇博客是講usercontrol的,里面很多復雜有規律的代碼都不是我手擼的,是通過代碼模板添加完之后生成的,
如何使用代碼模板
在類中定義屬性時輸入prop對應的單詞,然后按下2次Tab鍵,就可以生成代碼片段,
(1)在類中輸入prop=》2次Tab創建屬性,

(2)生成如下代碼:
public int MyProperty { get; set; }
這個內容的定義是在Visual Studio 的工具=》代碼片段管理器=》語言我選擇CSharp=》My Code Snippets下添加我自己的代碼片段,
點擊添加=》匯入選擇我的snippet檔案點擊匯入,如下圖

我上傳的是一個自動添加路由事件用于屬性通知的代碼片段,
使用方式如上圖在類中輸入propurv按下2次Tab鍵就可以快速的創建代碼,模板具體如下,可以快速的修改內容,
private void OnDefaulRoutedEventChanged(MyProperty oldValue, MyProperty newValue)
{
RoutedPropertyChangedEventArgs<MyProperty> args = new RoutedPropertyChangedEventArgs<MyProperty>(oldValue, newValue);
args.RoutedEvent = ownerclass.DefaulRoutedEventChangedEvent;
RaiseEvent(args);
}
?
public static readonly RoutedEvent DefaulRoutedEventChangedEvent = EventManager.RegisterRoutedEvent("DefaulRoutedEventChanged", RoutingStrategy.Bubble,
typeof(RoutedPropertyChangedEventHandler<MyProperty>), typeof(ownerclass));
?
public event RoutedPropertyChangedEventHandler<MyProperty> DefaulRoutedEventChanged
{
add { AddHandler(DefaulRoutedEventChangedEvent, value); }
remove { RemoveHandler(DefaulRoutedEventChangedEvent, value); }
}
?
這篇的主要目的是為了更好的撰寫代碼,是我在自定義控制元件代碼中解耦VM和UserContorl混用的,
我創建了一個C#相關的交流群,用于分享學習資料和討論問題,這個propuev也在群檔案里,歡迎有興趣的小伙伴:QQ群:542633085
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/281369.html
標籤:.NET技术
