如何将DataContextChanged事件提取到接口?

时间:2016-06-20 09:55:14

标签: windows-runtime winrt-xaml uwp-xaml

我正在尝试提取一个接口,该接口由从FrameworkElement继承的多个视图实现。喜欢这个

 public interface ILoadable{
        object SetModelAndReturn();

        void LoadControls();

        event TypedEventHandler<FrameworkElement, DataContextChangedEventArgs> DataContextChanged;
    }

但它失败了 &#39; FrameworkElement.DataContextChanged&#39;无法实现&#39; ILoadable.DataContextChanged&#39;因为&#39; FrameworkElement.DataContextChanged&#39;是一个Windows运行时事件和&lt; ILoadable.DataContextChanged&#39;是一个常规的.NET事件。

有解决方案吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

我刚刚使用Explicit事件处理程序解决了KeyDown / KeyUp事件的类似问题。

例如,给定一个接口

public interface IFoo 
{
    event KeyEventHandler KeyUp;
}

和一个班级

public class MyElement : UIElement, IFoo
{
}

我会收到错误消息

  

'UIElement.KeyUp'无法实现'IFoo.KeyUp',因为'UIElement.KeyUp'是Windows运行时事件,'IFoo.KeyUp'是常规的.NET事件。

为了解决这个编译错误,我明确地实现了这个事件。

public class MyElement : UIElement, IFoo
{
    event KeyEventHandler IFoo.KeyUp
    {
        add { this.KeyUp += value; }
        remove { this.KeyUp -= value; }
    }
}