подписка на изменения свойств в View throws ArgumentNullException

1

У меня есть код, похожий на следующий

ViewModel:

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

Когда я запускаю его, я получаю ArgumentNullException в строке "WhenAnyValue".

Кажется, это соответствует каждому примеру использования, который я могу найти. Я здесь в недоумении.

Теги:
xaml
reactiveui

1 ответ

1

Создайте ViewModel DependencyProperty, и ваши проблемы исчезнут

  • 0
    Я обновил ViewModel для DependencyProperty, но, к сожалению, я все еще вижу ту же проблему. Смотрите обновленный код выше.
  • 0
    На данный момент я думаю, что это может быть что-то особенное, потому что это приложение для Windows 8.1. Я поместил идентичный код в приложение WPF, и оно работает. Я отправил все это на github.com/ghotiphud/ViewWhenAnyError
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню