Description: Normally in multi-winform application we create a common base class which exhibits common behavior of all forms in application. Every win-form deriving from common base win-form will have same behavior as of base win-form.
Implementing base-derived model in WPF is a bit complex because both Xaml and code behind (.cs) class should know which base class to derive from.
Let's implement this model in WPF using one practical scenario:
Example: Suppose we want that every WPF dialog used in our application should be a modal dialog. So our motive is to create a base class which will ensure every dialog deriving from this base class will be modal dialog.
Implementation Approach:
Step 1: Create a base class which exposes one public method ShowModalDialog() which associates WPF window to main window. Any class deriving from this base class will call this exposed method instead of normal ShowDialog () method to show modal dialog.
public class DialogBase: Window
{
[DllImport("user32.dll")]
iternal static extern IntPtr GetActiveWindow (); // Returns active window reference.
public bool? ShowModalDialog()
{
WindowInteropHelper helper = new WindowInteropHelper(this);
helper.Owner = GetActiveWindow(); // Set main active window.
return this.ShowDialog();
}
Ibuomi AbiboPosted Jan 12, 2011, 5:26 PM
Hi, great post however I have a question. When I attempt to implement inheritance on a partial class, I get this error, "Partial declarations must not specify different base classes". My base class is Window1 and I have another class that I want to pass controls over to called Page1. They both have the same namespace "Namespace1" It is declared as such: public partial class Window1 : Window{} //base class public partial class Page1 : Window1{} //another class to inherit base class controls Any insight into this would help. Thanks