C# 创建从接口/抽象类和窗口继承的窗口

C# 创建从接口/抽象类和窗口继承的窗口,c#,wpf,oop,inheritance,C#,Wpf,Oop,Inheritance,我正在创建一个WPF应用程序,但遇到了继承问题。 我有一个名为DataHandler的类,它在GUI类和数据类之间建立链接。 代码需要保持打开状态,因为GUI或数据部分将来可能会更改,因此DataHandler使用接口或对真实GUI/数据类的抽象类引用 例如,我有一个SelectionFrame,它需要使用SetSelection()和GetSelection(),我创建了一个ISelectionGUI界面,该界面具有这两种方法。而SelectionFrame实现了它 public interf

我正在创建一个WPF应用程序,但遇到了继承问题。
我有一个名为
DataHandler
的类,它在GUI类和数据类之间建立链接。
代码需要保持打开状态,因为GUI或数据部分将来可能会更改,因此
DataHandler
使用接口或对真实GUI/数据类的抽象类引用

例如,我有一个
SelectionFrame
,它需要使用
SetSelection()
GetSelection()
,我创建了一个
ISelectionGUI
界面,该界面具有这两种方法。而
SelectionFrame
实现了它

public interface ISelectionGUI
{
    void SetSelection(HashSet<String> fields);

    void GetSelection(HashSet<String> fields);
}

 public partial class SelectionFrame : Window, ISelectionGUI
{
   [...]
}
但在执行此操作时,我无法使用
窗口
方法,除非我按如下方式进行转换:

ISelectionGUI sF = new SelectionFrame();
((Window)sF).Show();
这似乎不是最好的解决方案,因为没有任何东西会迫使下一个开发人员扩展
窗口

我还尝试使用一个扩展了
Window
的抽象类,并使用了我需要的方法
SelectionFrame
扩展了该类,我更改了xaml:


你做错了

您不需要在WPF UI元素中实现任何接口,因为您需要的是使用


不要在UI元素中实现该接口,而是创建一个适当的ViewModel来保存数据和应用程序逻辑,并通过

将其绑定到UI以进行交叉检查,您的SelectionFrame继承窗口类并实现ISelectionGUI?如果是这样的话,请分享完整的代码结构。@SumitGupta,yse,确实如此,编辑了我的帖子。向界面添加show方法?@TonyHopkinson,但这意味着将我需要的所有方法从
窗口添加到
iSelectGUI
。我不确定这是否是一个好方法。我不是很确定,但我记得在我的项目中,我通常在我的自定义基类中继承系统类,然后我开发的所有窗口和窗体,我从基类而不是窗口类继承它们。这里的SelectionFrame似乎是部分类[original window],而是创建一个BaseSelection,继承/实现所有您想要的,然后将该基类用作SelectionFrame的父类。希望这能解决问题。
<base:ISelectionGUI x:Class="WFChecker.SelectionFrame"
    [...]
    xmlns:base="clr-namespace:WFChecker"
    [...]
</base:ISelectionGUI>