将接口解析为UIElement(Unity,PRISM,C#)

时间:2009-10-07 20:10:34

标签: c# interface views unity-container uielement

使用PRISM时,使用unity来连接事物的正常方法是定义一个接口并使用此接口注册一个实现。现在,我对视图有疑问。场景很简单:

假设自定义视频控件允许设置播放命令。该控件由简单的接口“IPlayControlView”定义。显而易见的问题是,当我解析此控件并尝试将其添加到StackPanel时,它不起作用,因为我有一个IPlayControl,而不是UIElement

我可以将其投放到UIElement,因为我知道它是UIElement。但有没有更好的方法,比如

public interface IPlayControlView : UIElement

这不起作用,但也许其他一些事情会起作用......

这是一个普遍的问题,如果我使用接口解析视图,我每次都会遇到这个问题。也许它不是它的方式,但我一直认为其中之一.... 好的,刚才有个主意。我将只使用一个属性UIElement扩展IPlayControl,并将其设置为对自身的引用。所以,没关系,在输入时回答问题: - )

如果有更好的方法,我总是喜欢学习新事物。也许是IUIElement?

克里斯

1 个答案:

答案 0 :(得分:6)

你在倒数第二段描述的方式就是我这样做的方式。例如,如果我想将IShell用作UIElement(这很正常),我声明接口类似于:

public interface IShell
{
    UIElement GetView();
}

然后在我的实施中:

public partial class MyMainShell : UserControl, IShell
{
    public UIElement GetView()
    {
        return this;
    }
}