Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 继承WPF窗口_C#_Wpf_Visual Studio_Design Patterns_User Interface - Fatal编程技术网

C# 继承WPF窗口

C# 继承WPF窗口,c#,wpf,visual-studio,design-patterns,user-interface,C#,Wpf,Visual Studio,Design Patterns,User Interface,我有一个基类(WPF窗口)、设计(xaml)和代码 我想继承这个类,不是为了修改这个窗口的设计,而是为了修改代码 例如,我有一个登录窗口,它是我的基类,它有一个用户名文本框,密码文本框和登录按钮 此外,它还有处理登录的代码 现在,我想实现此对话框的两个基类: 根据表X进行身份验证 根据表Y进行身份验证 我认为我可以按如下方式设计我的基本对话框: ... BaseLoginWnd : Window { ... void Login_Click(...) // This metho

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

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

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

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

现在,我想实现此对话框的两个基类:

  • 根据表X进行身份验证

  • 根据表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();
    }
    
    我要提到的是,我知道这不是这个特定示例的最佳设计(最好创建一个单独的类来执行登录),但这只是一个示例


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

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

    您尝试了什么?您看到了吗?UI不是身份验证相关代码的适当位置。删除代码背后的所有内容,创建适当的ViewModel和服务层,并将每一项职责放在它所属的位置。您不需要为此对任何UI元素进行子类化,因为UI与您在这里所做的事情无关。