以编程方式在datatemplate中连接控件的事件处理程序

时间:2012-04-18 11:05:09

标签: wpf command datatemplate routed-commands

我在整个应用程序中都有可点击的图像/矩形控件,并且更喜欢用代码连接它们:

clickableimagecontrol.MouseUp += MouseUp_Handler

我很难理解如何使用datatemplates做同样的事情。我基本上需要找到模板应用于每个项目的位置,所以我可以插入我的钩子。

我知道WPF建议使用某种类型的命令,但这需要更多的样板代码,更不用说图像/矩形不支持命令,所以我不得不用样式化的按钮控件重做整个事情。

这可能吗?

1 个答案:

答案 0 :(得分:1)

请参阅可行的解决方案:

    private void ElementKeyUp(object source, KeyEventArgs args)
    {
        throw new NotImplementedException();
    }

    private DataTemplate GetDataTemplate()
    {
        var result = new DataTemplate();

        var factory = new FrameworkElementFactory(typeof(ListViewItem));

        var handler = new KeyEventHandler(ElementKeyUp);

        factory.AddHandler(KeyUpEvent, handler);

        result.VisualTree = factory;

        return result;
    }