天天看點

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

在寫自定義控件的時候,有一部分功能是當内部的值發生變化時,需要通知控件的使用者,而當我在寫依賴項屬性的時候,我可以通過popdp對應的代碼模闆來完成對應的代碼,但是當我來寫屬性更改回調的時候,卻發現沒有對應的RoutedEvent,導緻需要手撸那麼多的代碼,而很多時候一旦項目中趕進度,也許就會因為這個原因,把VM下的邏輯放到了UserContorl裡了。(我review别人的代碼時,發現了好多這種現象,但是邏輯都寫完了,改動又太大,而且可能他們一直處于加班狀态,我也不好意思在指出這些問題)。是以這一篇是寫使用代碼模闆輔助我們寫UserControl時更好的解耦。下一篇部落格是講usercontrol的。裡面很多複雜有規律的代碼都不是我手撸的,是通過代碼模闆添加完之後生成的。

如何使用代碼模闆

在類中定義屬性時輸入prop對應的單詞,然後按下2次Tab鍵,就可以生成代碼片段。

(1)在類中輸入prop=》2次Tab建立屬性。

WPF技巧:通過代碼片段管理器編寫自己常用的代碼模闆提示效率
(2)生成如下代碼:

public int MyProperty { get; set; }      

這個内容的定義是在Visual Studio 的工具=》代碼片段管理器=》語言我選擇CSharp=》My Code Snippets下添加我自己的代碼片段。

點選添加=》導入選擇我的snippet檔案點選導入。如下圖

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

我上傳的是一個自動添加路由事件用于屬性通知的代碼片段。

使用方式如上圖在類中輸入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