动态添加DataTemplate且为模板中的button控件添加Click Event

动态添加DataTemplate且为模板中的button控件添加Click Event

动态生成DataTemplate

 private DataTemplate GetDataTemplateForBindingLink()
        {
            StringBuilder cellTemplate = new StringBuilder();
            cellTemplate.Append("<DataTemplate ");
            cellTemplate.Append("xmlns='http://schemas.microsoft.com/client/2007' ");
            cellTemplate.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
            cellTemplate.Append("xmlns:local = 'Your namespace");
            cellTemplate.Append(";assembly=Your assembly name'>");
            cellTemplate.Append("<Grid>");
            cellTemplate.Append("<HyperlinkButton ");
            cellTemplate.Append("HorizontalContentAlignment='Center' Foreground='Blue' ");
            cellTemplate.Append("Content = '{Binding Path=RowData.Row.ScriptName}' Command='{Binding Path=LinkClick,ElementName=LogGrid}' CommandParameter='{Binding}' />");
            cellTemplate.Append("</Grid>");
            cellTemplate.Append("</DataTemplate>");
            DataTemplate dataTemplate =(DataTemplate)XamlReader.Load(cellTemplate.ToString());
            return dataTemplate;
        }

由于在动态生成的DataTemplate是直接添加Click事件将发生错误,所以就想到利用Command binding,结果是成功的,下面要做的工作如下:

实现ICommand接口类:

public class FMUICommand:ICommand
    {
        private RoutedEventHandler click;

        public FMUICommand(RoutedEventHandler click)
        {
            this.click = click;
        }

        public bool CanExecute(object parameter)
        {
            return true;
        }

        public event EventHandler CanExecuteChanged;

        public void Execute(object parameter)
        {
            this.click(parameter, null);
        }
    }

页面中CS代码添加一个属性和一个方法

public FMUICommand LinkClick { get; set; }

private void LinkButton_Click(object sender, RoutedEventArgs e)
 {
 }

在页面class构造函数中初始化LinkClick 属性:

this.LinkClick = new FMUICommand(this.LinkButton_Click);

其中页面的名字是:

x:Name="LogGrid"


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值