GhotiPhud
GhotiPhud

Reputation: 976

subscribing to property changes in View throws ArgumentNullException

I have code that looks similar to the following

ViewModel:

public class VM : ReactiveObject
{
    public double _number;
    public double Number
    {
        get { return _number; }
        set { this.RaiseAndSetIfChanged(ref _number, value); }
    }
}

View:

public sealed partial class MainPage : Page, IViewFor<VM>
{
    public MainPage()
    {
        ViewModel = new VM();
        DataContext = ViewModel;
        this.InitializeComponent();

        this.WhenAnyValue(t => t.ViewModel.Number)
            .Subscribe(n => Debug.WriteLine(n));
    }

    public VM ViewModel
    {
        get { return (VM)GetValue(ViewModelProperty); }
        set { SetValue(ViewModelProperty, value); }
    }

    public static readonly DependencyProperty ViewModelProperty =
        DependencyProperty.Register("ViewModel", typeof(VM), typeof(MainPage), new PropertyMetadata(null));

    object IViewFor.ViewModel
    {
        get { return ViewModel; }
        set { ViewModel = (VM)value; }
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        ViewModel.Number = ViewModel.Number + 1;
    }
}

When I run it I get an ArgumentNullException on the "WhenAnyValue" line.

This seems to follow every example of usage I can find. I'm at a loss here.

Upvotes: 1

Views: 221

Answers (1)

Ana Betts
Ana Betts

Reputation: 74654

Make ViewModel a DependencyProperty and your problems will go away

Upvotes: 1

Related Questions