WPF技巧:通過代碼片段管理器編寫自己常用的代碼模板提示效率


在寫自定義控件的時候,有一部分功能是當內部的值發生變化時,需要通知控件的使用者,而當我在寫依賴項屬性的時候,我可以通過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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM