【问题标题】:Inherit WPF window继承 WPF 窗口
【发布时间】:2014-06-12 04:14:18
【问题描述】:

我有一个基类(WPF 窗口)的设计(xaml)和代码。

我想继承这个类,不是为了修改这个窗口的设计,只是为了修改代码。

例如,我有一个登录窗口,它是我的基类,它有一个用户名文本框、密码文本框和登录按钮。

此外,它还有处理登录的代码。

现在,我想实现这个对话框的 2 个基类:

  1. 针对表 X 进行身份验证。

  2. 针对表 Y 进行身份验证。

我认为我可以如下设计我的基本对话框:

... BaseLoginWnd : Window
{
    ...
    void Login_Click(...)  // This method is implemented as a Template Method (Design pattern)
    {
        ...
        if (Authenticate())
        {
            MessageBox.Show("Success");
        }
        else
        {
            MessageBox.Show("Failure");
        }
        ...
    }

    abstract bool Authenticate();
}

我会提到,我知道这不是这个特定示例的最佳设计(最好创建一个单独的类来执行登录),但这只是一个示例。

所以我的问题是 - 如何使用基类的设计从窗口继承?

【问题讨论】:

  • 你试过什么?你见过this question吗?
  • UI 不适合放置与身份验证相关的代码。从后面的代码中删除所有这些,并创建一个适当的 ViewModel 和服务层,并将每个责任放在它所属的地方。您无需为此创建任何 UI 元素的子类,因为 UI 与您在此处所做的事情无关。

标签: c# wpf visual-studio design-patterns user-interface


【解决方案1】:

不可能继承同时包含 XAML 和代码的窗口/控件类。将整个文本框/按钮创建逻辑放在后面的代码中并删除 XAML 文件,然后您将能够继承该类。

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2023-03-26
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多