none
silverlight中后台代码动态添加xaml控件,怎么添加事件处理呢? RRS feed

  • 问题

  • 我在cs代码中动态加载了一个listbox模版: public DataTemplate Get_CheckTemplate() { string s = @" <DataTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml xmlns:toolkit=' clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit' > <toolkit:ExpanderView Margin='0,0,0,8' x:Name='aaaa' Header='{Binding}' ItemsSource='{Binding}' > </toolkit:ExpanderView> </DataTemplate>" return (DataTemplate)XamlReader.Load(s); } 在toolkit:ExpanderView中有一个tap函数,我怎么动态把这个tap函数加进去呢, 如果直接写在里面的话,报错,动态添加xaml控件不能添加函数处理, 那么怎么在外面加上呢?谢谢大家了。。。。。
    2011年12月7日 9:36

答案

  • 你好,

    你可以在后台通过DateTemplate.LoadContent方法得到DataTemplate中的ExpanderView对象,然后动态为它添加Tap事件。

    DataTemplate template = Get_CheckTemplate();
    ExpanderView view= template.LoadContent() as ExpanderView;

    view.Tap+=(s,args)=>{ //add logic here};

    • 已建议为答案 Shi Ding 2011年12月12日 1:27
    • 已标记为答案 Shi Ding 2011年12月25日 16:22
    2011年12月9日 9:19

全部回复

  • 我想您的最终目的是实现动态数据绑定,是这样吗?

    那样的话为何不把模板代码放在XAML,然后在XAML中实现数据绑定。


    Xuesong
    2011年12月9日 1:27
    版主
  • 你好,

    你可以在后台通过DateTemplate.LoadContent方法得到DataTemplate中的ExpanderView对象,然后动态为它添加Tap事件。

    DataTemplate template = Get_CheckTemplate();
    ExpanderView view= template.LoadContent() as ExpanderView;

    view.Tap+=(s,args)=>{ //add logic here};

    • 已建议为答案 Shi Ding 2011年12月12日 1:27
    • 已标记为答案 Shi Ding 2011年12月25日 16:22
    2011年12月9日 9:19
  • 你好雪松,既然有后台添加模版控件,就有它用到的地方,我想现在就把这点学会了,以后用到的时候就能实现了,呵呵,我学会了用xamlreader去load比如button、textblock控件和添加函数处理了,但还没有实现模版控件添加event,就来问问大家了。。。呵呵
    2011年12月9日 17:29
  • 很好的想法,集思广益。我被惯性思维给局限了。
    Xuesong
    2011年12月12日 1:56
    版主
  • 谢谢版主了,勤勤恳恳为我们答疑,呵呵,遇到问题,还来请教呀 哈哈

    2011年12月17日 16:15