真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

CustomControl之內置命令

    在打造CustomControl時, 我們可能會遇到這樣的情況: 希望模板中的Button能執(zhí)行Control中某些特定的邏輯.

公司主營業(yè)務:網站設計、成都網站制作、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出全州免費做網站回饋大家。

    對于這種情況,有兩種解決方法:TemplatePartAttribute和Command.

    TemplatePartAttribute就是對UI中的元素命名, 然后在后臺尋找此元素進行相應的操作. 很可惜, 這會使得UI與邏輯耦合, 這與CustomControl的初衷相悖.當外部程序改寫Template時,很有可能失去作用.

    而Command則十分可靠, 因為它能使UI和邏輯分離. 外部改寫UI后, 只需對相應的元素重新綁定內置的Command就可以正常地工作. 下面為大家如何內置Command和如何進行綁定.

    

    在下面的后臺代碼中, 對TestCommand進行聲明和初始化. 然后在靜態(tài)構造函數(shù)中通過CommandManager.RegisterClassCommandBinding(Type,CommandBinding)的方法進行類綁定(當然, 你也可以在構造函數(shù)中使用公共的CommandBindings集合,但這并不可靠,因為他人使用此控件時可以隨意修改CommandBindings)

    public class CustomControl1 : Control
    {
        public static readonly RoutedUICommand TestCommand;
        
        static CustomControl1()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1)));
            TestCommand = new RoutedUICommand("Test", "TestCommand", typeof(CustomControl1));
            CommandManager.RegisterClassCommandBinding(typeof(CustomControl1), new CommandBinding(TestCommand, TestExecute, TestCanExecute));
        
        }

        private static void TestCanExecute(object sender, CanExecuteRoutedEventArgs e)
        {
            CustomControl1 c = sender as CustomControl1;
            if (c == null) return;
            e.CanExecute = c.CanExecute;
        }

        private static void TestExecute(object sender, ExecutedRoutedEventArgs e)
        {
            CustomControl1 c = sender as CustomControl1;
            if (c == null) return;

            Console.WriteLine("---TestCommand Executed---");
        }


        public bool CanExecute;

        public CustomControl1()
        {
           
        }

    }

    接下來,看看Generic.xaml中的UI代碼:


    
        
            
                
                    
                        
                    
                
            
        
    

    在上面代碼的Button中, Command只需要這樣就可以對內置的命令進行綁定.

    以上就是在CustomControl中內置Command的方法.

PS: Button的Content不會自動綁定RoutedUICommand中的Text屬性,可以將Content綁定Command.Text , 如下: Content="{Binding Path=Command.Text,RelativeSource={RelativeSource Self}}"


分享題目:CustomControl之內置命令
URL網址:http://weahome.cn/article/ijccch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部