Inheriting from a UserControl in WPF Inheriting from a UserControl in WPF wpf wpf

Inheriting from a UserControl in WPF


Well .. you create your base control

public abstract class BaseUserControl : UserControl{...}

then in the XAML file :

<Controls:BaseUserControl x:Class="Termo.Win.Controls.ChildControl"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:Controls="clr-namespace:Namespace.Of.Your.BaseControl">

And that should work.

EDIT: Hmm.. this example is useful when you have a base control without XAML and then inherit from it. The other way around(from a base control with Xaml) - I'm not sure how you can go about it.

EDIT2: Apparently from this post + comments i take that what you want might not be possible.


AFAIK you cannot inherit the xaml, you can only inherit the code behind.

We recently encountered the same problem on our project. The way we ended up solving our problem was to create a usercontrol and adding it to the "child" usercontrol.

If that doesnt work/help take a look at this:http://geekswithblogs.net/lbugnion/archive/2007/03/02/107747.aspx1


I may have a bit of a solution: Composition instead of inheritance - I have come up with control, that has 'content slots' assignable from outside through databinding, look at my SO thread.

Example of use:

<UserControl ... >    <!-- My wrapping XAML -->        <Common:DialogControl>                <Common:DialogControl.Heading>                        <!-- Slot for a string -->                </Common:DialogControl.Heading>                <Common:DialogControl.Control>                        <!-- Concrete dialog's content goes here -->                </Common:DialogControl.Control>                <Common:DialogControl.Buttons>                        <!-- Concrete dialog's buttons go here -->                </Common:DialogControl.Buttons>        </Common:DialogControl>    <!-- /My wrapping XAML --></UserControl>

Together with some handling code in codebehind it would be a nice base component for dialog windows.