首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverlight自定义控件创建自定义事件

Silverlight自定义控件创建自定义事件
EN

Stack Overflow用户
提问于 2009-08-17 10:47:05
回答 1查看 9.5K关注 0票数 5

如何创建一个事件来处理自定义控件中另一个控件的单击事件?

这是我所得到的设置:一个文本框和一个按钮(自定义控件),一个silverlight应用程序(使用上面的自定义控件)

我想从主应用程序上的自定义控件公开按钮的click事件,我该怎么做?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2009-08-19 16:02:11

这是一个非常简单的版本,因为我没有使用依赖属性或其他任何东西。它将公开Click属性。这里假设按钮模板部件的名称是" button“。

代码语言:javascript
复制
using System.Windows;
using System.Windows.Controls;

namespace SilverlightClassLibrary1
{
    [TemplatePart(Name = ButtonName , Type = typeof(Button))]
    public class TemplatedControl1 : Control
    {
        private const string ButtonName = "Button";

        public TemplatedControl1()
        {
            DefaultStyleKey = typeof(TemplatedControl1);
        }

        private Button _button;

        public event RoutedEventHandler Click;

        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            // Detach during re-templating
            if (_button != null)
            {
                _button.Click -= OnButtonTemplatePartClick;
            }

            _button = GetTemplateChild(ButtonName) as Button;

            // Attach to the Click event
            if (_button != null)
            {
                _button.Click += OnButtonTemplatePartClick;
            }
        }

        private void OnButtonTemplatePartClick(object sender, RoutedEventArgs e)
        {
            RoutedEventHandler handler = Click;
            if (handler != null)
            {
                // Consider: do you want to actually bubble up the original
                // Button template part as the "sender", or do you want to send
                // a reference to yourself (probably more appropriate for a
                // control)
                handler(this, e);
            }
        }
    }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1287294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档