天天看點

WPF 中動态建立和删除控件

原文: WPF 中動态建立和删除控件

動态建立控件

1.容器控件.RegisterName("Name",要注冊的控件)   //注冊控件

2.容器控件.FindName("Name") as  控件類型            //找到控件并轉換成相應類型

注意:僅通過 控件.Name來設定是不能通過FindName來找到控件的,必須注冊

動态删除控件

1.容器控件.Children.Remove(控件)                           //移除控件

2.容器控件.UnregisterName("Name")                       //取消注冊

其它設定

1.控件.SetValue(Grid.RowProperty, 0);                    //設定控件在Grid面闆中的行數

   控件.SetValue(Grid.ColumnProperty, 1);              

//設定控件在Grid面闆中的列數

2.Canvas.SetLeft("控件名", 50);                                //設定控件在Canvas面闆中的橫坐标

   Canvas.SetTop("控件名", 50);                                //設定控件在Canvas面闆中的縱坐标

eg:

當點選Button_Add按鈕的時候在Canvas裡添加一個Button;

當點選Button_Remove的時候把這個新加的Button移除;

設:Canvas 的Name為 canvas

代碼:

private void Button_Add_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            Button btn = new Button();
            //btn.Name = "newButton";//這裡設定的Name是找不到的
            btn.Width = 100;
            btn.Height= 50;
            canvas.Children.Add(btn);
            canvas.RegisterName("newButton", btn);//注冊名字,以便以後使用
        }

        private void Button_Remove_Click(object sender, RoutedEventArgs e)
        {
            Button btn = canvas.FindName("newButton") as Button;//找到剛新添加的按鈕
            if (btn != null)//判斷是否找到,以免在未添加前就誤點了
            {
                canvas.Children.Remove(btn);//移除對應按鈕控件
                canvas.UnregisterName("newButton");//還需要把對用的名字登出掉,否則再次點選Button_Add會報錯
            }
        }           

運作一下,就可以了。