日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

WP記錄DependencyProperty學習(1)

系統 1934 0

很早之前就看到DependencyProperty,但是每次看到都不想去深入,一眼看過去好難的樣子,今天靜下來學習一下,怕自己過幾天又忘了,來記錄一下自己學習的東西。

首先我們來看看這個東西,

      
        public
      
      
        static
      
      
        readonly
      
       DependencyProperty ItemContainerStyleProperty =
      
        

            DependencyProperty.Register(
      
      
        "
      
      
        ItemContainerStyle
      
      
        "
      
      , 
      
        typeof
      
      (string), 
      
        typeof
      
      (MyControl), 
      
        new
      
       PropertyMetadata(
      
        null
      
      , OnItemContainerStylePropertyChanged));
    

第一眼被嚇懵了,都干嘛的,好厲害的樣子,下面慢慢來說:上面就是定義了一個依賴屬性,干嘛用的,看名字就是用來設置屬性的,來看看參數ItemContainerStyle這個相當于標示符,在你寫xaml設置的時候,系統會去找到你設置的這個名字進行操作,typeof(string)設置類型,typeof(MyControl)這個告訴系統你這個注冊的屬性是屬于哪個類的,new PropertyMetadata(null, OnItemContainerStylePropertyChanged)屬性值改變時觸發的事件和屬性的初始值

      
        public
      
      
        string
      
      
         ContentInfo

        {

            
      
      
        get
      
       { 
      
        return
      
       (
      
        string
      
      
        )GetValue(ItemContainerStyleProperty); }

            
      
      
        set
      
      
         { SetValue(ItemContainerStyleProperty, value); }

        }
      
    

上面這個應該沒問題了,就是設置或者獲取屬性了,ContentInfo就是你調用自己寫的控件時可以看到的屬性了

      [TemplatePart(Name = InnerSelectorName, Type = 
      
        typeof
      
      
        (LongListSelector))]

[StyleTypedProperty(Property 
      
      = 
      
        "MyWidth
      
      
        "
      
      , StyleTargetType = 
      
        typeof
      
      
        (MyControl))]

[TemplateVisualState(Name 
      
      =”Selected“, GroupName = "SelectionStates")]
    

剛看到上面這幾個大括號我又懵了,慢慢來吧:

TemplatePart的作用是*.cs中對于*.xaml中定義的控件進行獲取,并進行操作,不好理解,其實就是在資源字典ResourceDictionary中(也就是一個.xaml)定義中可以使用.cs的屬性一些東西,.cs可以使用到.xaml里面的動畫一些東西

StyleTypedProperty:?FontSize="{TemplateBinding FontSize}“這個大家應該在自定義控件時在.xmal經常看到吧,改一下FontSize="{TemplateBinding?MyWidth}“,沒錯StyleTypedProperty就是關聯cs里面的MyWidth屬性

TemplateVisualState:這個就是我們經常看到的過度狀態了,看看這個代碼,是不是明白了

       <VisualStateGroup x:Name=
      
        "
      
      
        SelectionStates
      
      
        "
      
      >

            <VisualState x:Name=
      
        "
      
      
        Selected
      
      
        "
      
      />

        </VisualStateGroup>
    

說到底上面的這幾個都是*.cs中對于*.xaml中定義的控件進行獲取,并進行操作,xaml里面可以用cs里面設置的屬性,cs里面可以調用.xmal里面寫的個種動畫效果

?

然后來說說EventHandler事件,來代碼

      
        public
      
      
        event
      
      
         EventHandler ManipulationStateChanged;


      
      
        public
      
      
        event
      
      
         PropertyChangedEventHandler PropertyChanged;




      
      
        public
      
      
        override
      
      
        void
      
      
         OnApplyTemplate()

        {

            
      
      
        base
      
      
        .OnApplyTemplate();



            _myControl.Clear();

            
      
      
        if
      
       (_myControl!= 
      
        null
      
      
        )

            {

                _myControl.ManipulationStateChanged 
      
      -=
      
         OnInnerSelectorManipulationStateChanged;

                _innerSelector.PropertyChanged 
      
      -=
      
         OnInnerSelectorPropertyChanged;

            }

            _myControl
      
      = 
      
        this
      
      .GetTemplateChild(InnerSelectorName) 
      
        as
      
      
         LongListSelector;

            
      
      
        if
      
       (_myControl!= 
      
        null
      
      
        )

            {

                _myControl.ManipulationStateChanged 
      
      +=
      
         OnInnerSelectorManipulationStateChanged;

                _myControl.PropertyChanged 
      
      +=
      
         OnInnerSelectorPropertyChanged;

            }

        }
      
    

這個比較簡單了,就是事件的訂閱和取消了

?

上面這些都是繼承Control寫的,如果要實現listbox這種需要item這種單項內容的,還要加入繼承ContentControl的item相應的屬性的方法,要是覺的直接繼承Control很多屬性和事件都被加進來太多的話還可以自己寫個DependencyProperty 和DependencyObject,詳細可以參考一下這篇DependencyObject,更深入的以后學習了在發

?

?

    
      ?
    
  

?

WP記錄DependencyProperty學習(1)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 讷河市| 元江| 五河县| 彰化县| 马关县| 聊城市| 肇州县| 仁布县| 外汇| 双鸭山市| 红原县| 关岭| 奉贤区| 邢台县| 岱山县| 荔波县| 宜春市| 永修县| 多伦县| 卓尼县| 阿尔山市| 新巴尔虎左旗| 恩施市| 双桥区| 东阳市| 常山县| 广汉市| 临海市| 西盟| 丽水市| 莒南县| 江阴市| 武邑县| 宜昌市| 新津县| 奇台县| 新民市| 无为县| 会泽县| 文安县| 新巴尔虎左旗|