订阅View中的属性更改会抛出ArgumentNullException

时间:2014-05-19 15:00:05

标签: c# xaml reactiveui

我的代码与以下内容类似

视图模型:

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

查看:

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;
    }
}

当我运行它时,我在“WhenAnyValue”行上得到一个ArgumentNullException。

这似乎跟随我能找到的每个用法示例。我在这里不知所措。

1 个答案:

答案 0 :(得分:1)

使ViewModel成为DependencyProperty,你的问题就会消失

相关问题