Silverlight动态加载控件的2种方法

两种方法都是通过后台编码的方式实现。

一种方法是直接申明控件,然后add。另一种是拼接XAML串,然后加载。

private void button1_Click(object sender, RoutedEventArgs e)
        {
            Button b = new Button();

            b.Height = 23;
            b.Width = 100;
            b.HorizontalAlignment = HorizontalAlignment.Left;
            //b.Margin = new Thickness(0);
            b.Click += buttonClick;
            b.Content = DateTime.Now;
            b.Tag = "b button" + DateTime.Now.ToString();
           stackPanel1.Children.Add(b);
        }

        private void buttonClick(object sender, RoutedEventArgs e)
        {
            Button b = sender as Button;
            if (b != null)
                MessageBox.Show(b.Tag.ToString());
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            StringBuilder xaml = new StringBuilder();
            xaml.Append("<TextBlock ");
            xaml.Append("xmlns=\"http://schemas.microsoft.com/client/2007\" ");
            xaml.Append(" FontWeight=\"Bold\" Text=\"动态创建XAML对象\" />");

            //创建TextBlock
            TextBlock tb = (TextBlock)XamlReader.Load(xaml.ToString());
            stackPanel1.Children.Add(tb);

            xaml = new StringBuilder();
            xaml.Append("<Button ");
            xaml.Append("xmlns=\"http://schemas.microsoft.com/client/2007\" ");
            xaml.Append(" Content=\"a Button\" Name=\"btn1\" Tag=\"a tag\"/>");

            //创建TextBlock
            Button b = (Button)XamlReader.Load(xaml.ToString());
            b.Click += buttonClick;
            stackPanel1.Children.Add(b);

        }

 

对于第二种方法,要注意的是

xaml.Append("xmlns=\"http://schemas.microsoft.com/client/2007\" ");
这个不能漏掉。xmlns是xml命名空间。

对于拼接XAML字符串,注意属性名是大小写敏感的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值