瀏覽代碼

Add xml docs and usage examples

artyom 6 年之前
父節點
當前提交
724ec9b8bb
共有 1 個文件被更改,包括 40 次插入4 次删除
  1. 40 4
      src/Avalonia.ReactiveUI/RoutedViewHost.cs

+ 40 - 4
src/Avalonia.ReactiveUI/RoutedViewHost.cs

@@ -10,9 +10,45 @@ using Splat;
 namespace Avalonia
 {
     /// <summary>
-    /// This control hosts the View associated with a Router, and will display
-    /// the View and wire up the ViewModel whenever a new ViewModel is navigated to.
+    /// This control hosts the View associated with ReactiveUI RoutingState,
+    /// and will display the View and wire up the ViewModel whenever a new
+    /// ViewModel is navigated to. Nested routing is also supported.
     /// </summary>
+    /// <remarks>
+    /// <para>
+    /// ReactiveUI routing consists of an IScreen that contains current
+    /// RoutingState, several IRoutableViewModels, and a platform-specific
+    /// XAML control called RoutedViewHost.
+    /// </para>
+    /// <para>
+    /// RoutingState manages the ViewModel navigation stack and allows
+    /// ViewModels to navigate to other ViewModels. IScreen is the root of
+    /// a navigation stack; despite the name, its views don't have to occupy
+    /// the whole screen. RoutedViewHost monitors an instance of RoutingState,
+    /// responding to any changes in the navigation stack by creating and
+    /// embedding the appropriate view.
+    /// </para>
+    /// <para>
+    /// Place this control to a view containing your ViewModel that implements
+    /// IScreen, and bind IScreen.Router property to RoutedViewHost.Router property.
+    /// <code>
+    /// <![CDATA[
+    /// <rxui:RoutedViewHost
+    ///     HorizontalAlignment="Stretch"
+    ///     VerticalAlignment="Stretch"
+    ///     Router="{Binding Router}">
+    ///     <rxui:RoutedViewHost.DefaultContent>
+    ///         <TextBlock Text="Default Content"/>
+    ///     </rxui:RoutedViewHost.DefaultContent>
+    /// </rxui:RoutedViewHost>
+    /// ]]>
+    /// </code>
+    /// </para>
+    /// <para>
+    /// See <see href="https://reactiveui.net/docs/handbook/routing/">
+    /// ReactiveUI routing documentation website</see> for more info.
+    /// </para>
+    /// </remarks>
     public class RoutedViewHost : UserControl, IActivatable, IEnableLogger
     {
         /// <summary>
@@ -96,7 +132,7 @@ namespace Avalonia
         /// </summary>
         public new object Content
         {
-            get => base.Content ?? DefaultContent;
+            get => base.Content;
             private set => base.Content = value;
         }
 
@@ -117,7 +153,7 @@ namespace Avalonia
             if (viewModel == null)
             {
                 this.Log().Info("ViewModel is null, falling back to default content.");
-                UpdateContent(null);
+                UpdateContent(DefaultContent);
                 return;
             }