创建从接口/抽象类和窗口继承的窗口
本文关键字:窗口 继承 抽象类 接口 创建 | 更新日期: 2023-09-27 18:14:28
我正在创建一个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
{
[...]
}
在DataHandler
类中是这样的:
ISelectionGUI sF = new SelectionFrame();
但是在这样做的同时,我无法使用Window
方法,除非我像这样转换它:
((Window)sF).Show();
这似乎不是最好的解决方案,因为没有什么会迫使下一个开发人员扩展Window
。
我还尝试使用一个抽象类来扩展Window
,并具有我需要的方法。SelectionFrame
扩展了这个类,我改变了xaml(以下):
<base:ISelectionGUI x:Class="WFChecker.SelectionFrame"
[...]
xmlns:base="clr-namespace:WFChecker"
[...]
</base:ISelectionGUI>
但是我没有工作,因为VisualStudio不让我在设计器中使用抽象类。我的问题是:我如何设法创建一个框架,实现一个类或扩展一个抽象类,同时仍然能够访问Window
方法?
你做错了。
你不需要在WPF UI元素中实现任何接口,因为你需要的是使用MVVM模式。
不是在UI元素中实现该接口,而是创建一个适当的ViewModel来保存数据和应用程序逻辑,并通过DataBinding