0

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

例如,我有一个SelectionFrameand 它需要使用SetSelection()and 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方法?

4

1 回答 1

2

你做错了。

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

与其在 UI 元素中实现该接口,不如创建一个适当的 ViewModel 来保存您的数据和应用程序逻辑,并通过DataBinding将其绑定到 UI

于 2013-05-20T18:19:44.107 回答