diff --git a/src/Avalonia.ReactiveUI/AutoDataTemplateBindingHook.cs b/src/Avalonia.ReactiveUI/AutoDataTemplateBindingHook.cs index fe4e9dd94a..b6cdb77f81 100644 --- a/src/Avalonia.ReactiveUI/AutoDataTemplateBindingHook.cs +++ b/src/Avalonia.ReactiveUI/AutoDataTemplateBindingHook.cs @@ -29,7 +29,7 @@ namespace Avalonia.ReactiveUI /// public bool ExecuteHook( - object source, object target, + object? source, object target, Func[]> getCurrentViewModelProperties, Func[]> getCurrentViewProperties, BindingDirection direction) diff --git a/src/Avalonia.ReactiveUI/Avalonia.ReactiveUI.csproj b/src/Avalonia.ReactiveUI/Avalonia.ReactiveUI.csproj index 624c5772a9..2792ae1c91 100644 --- a/src/Avalonia.ReactiveUI/Avalonia.ReactiveUI.csproj +++ b/src/Avalonia.ReactiveUI/Avalonia.ReactiveUI.csproj @@ -3,6 +3,8 @@ netstandard2.0 Avalonia.ReactiveUI false + enable + nullable diff --git a/src/Avalonia.ReactiveUI/ReactiveUserControl.cs b/src/Avalonia.ReactiveUI/ReactiveUserControl.cs index f4824ade0a..4987349162 100644 --- a/src/Avalonia.ReactiveUI/ReactiveUserControl.cs +++ b/src/Avalonia.ReactiveUI/ReactiveUserControl.cs @@ -17,8 +17,8 @@ namespace Avalonia.ReactiveUI /// ViewModel type. public class ReactiveUserControl : UserControl, IViewFor where TViewModel : class { - public static readonly StyledProperty ViewModelProperty = AvaloniaProperty - .Register, TViewModel>(nameof(ViewModel)); + public static readonly StyledProperty ViewModelProperty = AvaloniaProperty + .Register, TViewModel?>(nameof(ViewModel)); /// /// Initializes a new instance of the class. @@ -34,16 +34,16 @@ namespace Avalonia.ReactiveUI /// /// The ViewModel. /// - public TViewModel ViewModel + public TViewModel? ViewModel { get => GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value); } - object IViewFor.ViewModel + object? IViewFor.ViewModel { get => ViewModel; - set => ViewModel = (TViewModel)value; + set => ViewModel = (TViewModel?)value; } protected override void OnDataContextChanged(EventArgs e) @@ -51,7 +51,7 @@ namespace Avalonia.ReactiveUI ViewModel = DataContext as TViewModel; } - private void OnViewModelChanged(object value) + private void OnViewModelChanged(object? value) { if (value == null) { diff --git a/src/Avalonia.ReactiveUI/ReactiveWindow.cs b/src/Avalonia.ReactiveUI/ReactiveWindow.cs index 758a807bfc..726fb3d661 100644 --- a/src/Avalonia.ReactiveUI/ReactiveWindow.cs +++ b/src/Avalonia.ReactiveUI/ReactiveWindow.cs @@ -17,8 +17,8 @@ namespace Avalonia.ReactiveUI /// ViewModel type. public class ReactiveWindow : Window, IViewFor where TViewModel : class { - public static readonly StyledProperty ViewModelProperty = AvaloniaProperty - .Register, TViewModel>(nameof(ViewModel)); + public static readonly StyledProperty ViewModelProperty = AvaloniaProperty + .Register, TViewModel?>(nameof(ViewModel)); /// /// Initializes a new instance of the class. @@ -35,19 +35,19 @@ namespace Avalonia.ReactiveUI /// /// The ViewModel. /// - public TViewModel ViewModel + public TViewModel? ViewModel { get => GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value); } - object IViewFor.ViewModel + object? IViewFor.ViewModel { get => ViewModel; - set => ViewModel = (TViewModel)value; + set => ViewModel = (TViewModel?)value; } - private void OnDataContextChanged(object value) + private void OnDataContextChanged(object? value) { if (value is TViewModel viewModel) { @@ -59,7 +59,7 @@ namespace Avalonia.ReactiveUI } } - private void OnViewModelChanged(object value) + private void OnViewModelChanged(object? value) { if (value == null) { diff --git a/src/Avalonia.ReactiveUI/RoutedViewHost.cs b/src/Avalonia.ReactiveUI/RoutedViewHost.cs index 421633cd58..63456bc13a 100644 --- a/src/Avalonia.ReactiveUI/RoutedViewHost.cs +++ b/src/Avalonia.ReactiveUI/RoutedViewHost.cs @@ -55,8 +55,8 @@ namespace Avalonia.ReactiveUI /// /// for the property. /// - public static readonly StyledProperty RouterProperty = - AvaloniaProperty.Register(nameof(Router)); + public static readonly StyledProperty RouterProperty = + AvaloniaProperty.Register(nameof(Router)); /// /// Initializes a new instance of the class. @@ -67,12 +67,12 @@ namespace Avalonia.ReactiveUI { var routerRemoved = this .WhenAnyValue(x => x.Router) - .Where(router => router == null) - .Cast(); + .Where(router => router == null)! + .Cast(); this.WhenAnyValue(x => x.Router) .Where(router => router != null) - .SelectMany(router => router.CurrentViewModel) + .SelectMany(router => router!.CurrentViewModel) .Merge(routerRemoved) .Subscribe(NavigateToViewModel) .DisposeWith(disposables); @@ -82,7 +82,7 @@ namespace Avalonia.ReactiveUI /// /// Gets or sets the of the view model stack. /// - public RoutingState Router + public RoutingState? Router { get => GetValue(RouterProperty); set => SetValue(RouterProperty, value); @@ -91,13 +91,13 @@ namespace Avalonia.ReactiveUI /// /// Gets or sets the ReactiveUI view locator used by this router. /// - public IViewLocator ViewLocator { get; set; } + public IViewLocator? ViewLocator { get; set; } /// /// Invoked when ReactiveUI router navigates to a view model. /// /// ViewModel to which the user navigates. - private void NavigateToViewModel(object viewModel) + private void NavigateToViewModel(object? viewModel) { if (Router == null) { diff --git a/src/Avalonia.ReactiveUI/TransitioningContentControl.cs b/src/Avalonia.ReactiveUI/TransitioningContentControl.cs index cc1613ce19..9685ecbe91 100644 --- a/src/Avalonia.ReactiveUI/TransitioningContentControl.cs +++ b/src/Avalonia.ReactiveUI/TransitioningContentControl.cs @@ -13,20 +13,20 @@ namespace Avalonia.ReactiveUI /// /// for the property. /// - public static readonly StyledProperty PageTransitionProperty = - AvaloniaProperty.Register(nameof(PageTransition), + public static readonly StyledProperty PageTransitionProperty = + AvaloniaProperty.Register(nameof(PageTransition), new CrossFade(TimeSpan.FromSeconds(0.5))); /// /// for the property. /// - public static readonly StyledProperty DefaultContentProperty = - AvaloniaProperty.Register(nameof(DefaultContent)); + public static readonly StyledProperty DefaultContentProperty = + AvaloniaProperty.Register(nameof(DefaultContent)); /// /// Gets or sets the animation played when content appears and disappears. /// - public IPageTransition PageTransition + public IPageTransition? PageTransition { get => GetValue(PageTransitionProperty); set => SetValue(PageTransitionProperty, value); @@ -35,7 +35,7 @@ namespace Avalonia.ReactiveUI /// /// Gets or sets the content displayed whenever there is no page currently routed. /// - public object DefaultContent + public object? DefaultContent { get => GetValue(DefaultContentProperty); set => SetValue(DefaultContentProperty, value); @@ -44,7 +44,7 @@ namespace Avalonia.ReactiveUI /// /// Gets or sets the content with animation. /// - public new object Content + public new object? Content { get => base.Content; set => UpdateContentWithTransition(value); @@ -60,7 +60,7 @@ namespace Avalonia.ReactiveUI /// Updates the content with transitions. /// /// New content to set. - private async void UpdateContentWithTransition(object content) + private async void UpdateContentWithTransition(object? content) { if (PageTransition != null) await PageTransition.Start(this, null, true); diff --git a/src/Avalonia.ReactiveUI/ViewModelViewHost.cs b/src/Avalonia.ReactiveUI/ViewModelViewHost.cs index 0169b268ca..c88323d674 100644 --- a/src/Avalonia.ReactiveUI/ViewModelViewHost.cs +++ b/src/Avalonia.ReactiveUI/ViewModelViewHost.cs @@ -15,8 +15,8 @@ namespace Avalonia.ReactiveUI /// /// for the property. /// - public static readonly AvaloniaProperty ViewModelProperty = - AvaloniaProperty.Register(nameof(ViewModel)); + public static readonly AvaloniaProperty ViewModelProperty = + AvaloniaProperty.Register(nameof(ViewModel)); /// /// Initializes a new instance of the class. @@ -34,7 +34,7 @@ namespace Avalonia.ReactiveUI /// /// Gets or sets the ViewModel to display. /// - public object ViewModel + public object? ViewModel { get => GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value); @@ -43,13 +43,13 @@ namespace Avalonia.ReactiveUI /// /// Gets or sets the view locator. /// - public IViewLocator ViewLocator { get; set; } + public IViewLocator? ViewLocator { get; set; } /// /// Invoked when ReactiveUI router navigates to a view model. /// /// ViewModel to which the user navigates. - private void NavigateToViewModel(object viewModel) + private void NavigateToViewModel(object? viewModel) { if (viewModel == null) { @@ -74,4 +74,4 @@ namespace Avalonia.ReactiveUI Content = viewInstance; } } -} \ No newline at end of file +}