As in the title itself, how can you set the dependency property in XAML when the base class is shared? When I try to do this, I get a NullReferenceException, setting the property from code that works fine. It also works when the base class is not shared. I am using .NET4
Here is a sample code to demonstrate:
Windowbase.cs
using System.Windows;
namespace GenericDependencyPropertyTest
{
public class WindowBase<ViewModel> : Window
{
public static readonly DependencyProperty HeaderProperty = DependencyProperty.Register(
"Header", typeof(string), typeof(WindowBase<ViewModel>), new PropertyMetadata("No Header Name Assigned"));
public string Header
{
get { return (string)GetValue(HeaderProperty); }
protected set { SetValue(HeaderProperty, value); }
}
protected virtual ViewModel Model { get; set; }
}
}
MainWindow.xaml
<local:WindowBase x:Class="GenericDependencyPropertyTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:GenericDependencyPropertyTest"
x:TypeArguments="local:IMyViewModel"
Title="MainWindow" Height="350" Width="525" Header="Test">
<Grid>
</Grid>
</local:WindowBase>
MainWindow.xaml.cs
namespace GenericDependencyPropertyTest
{
public partial class MainWindow : WindowBase<IMyViewModel>
{
public MainWindow()
{
InitializeComponent();
}
protected override IMyViewModel Model
{
get
{
return base.Model;
}
set
{
base.Model = value;
}
}
}
}
IMyViewModel.cs
namespace GenericDependencyPropertyTest
{
public interface IMyViewModel
{
}
}
source
share