diff --git a/docs/_sidebar.md b/docs/_sidebar.md index dc93eca..8b42da2 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -15,22 +15,23 @@ - [附录](dependency-injection/appendix.md) - 对话服务(Dialog Service) - [对话服务](dialogs/index.md) - - [IDialogAware ViewModels](dialogs/dialog-aware.md) - - [IDialogWindow(WPF & Uno Platform)](dialogs/dialog-window.md) + - [IDialogAware 视图模型](dialogs/dialog-aware.md) + - [IDialogWindow(WPF & Uno 平台)](dialogs/dialog-window.md) - [事件聚合器(Event Aggregator)](event-aggregator.md) - Mvvm - - [绑定](mvvm/bindablebase.md) - - [ViewModelLocator](mvvm/viewmodel-locator.md) + - [BindableBase](mvvm/bindablebase.md) + - [ViewModel 定位器(ViewModelLocator)](mvvm/viewmodel-locator.md) - 模块化(Modularity) - [开始使用](modularity/index.md) - [模块目录](modularity/module-catalog.md) - [模块初始化](modularity/module-initialization.md) - 导航(Navigation) - [INavigationParameters](navigation/navigation-parameters.md) - - [Page Navigation](navigation/page-navigation.md) + - [页面导航](navigation/page-navigation.md) - 区域(Regions) - [开始使用](navigation/regions/index.md) - 平台(Platforms) - Wpf - [介绍](platforms/wpf/introduction.md) - 插件(Plugins) + - 基本会话 diff --git a/docs/commands/commanding.md b/docs/commands/commanding.md index e128047..ad3de2e 100644 --- a/docs/commands/commanding.md +++ b/docs/commands/commanding.md @@ -4,13 +4,13 @@ 当命令与视图交互时,用户可以通过许多不同的方式直观地表示和调用命令。在大多数情况下,它们会因单击鼠标而调用,但也可以通过快捷键按下、触摸手势或任何其他输入事件来调用。视图中的控件是绑定到 ViewModel 命令的数据,以便用户可以使用控件定义的任何输入事件或手势来调用它们。视图中的 UI 控件与命令之间的交互可以是双向的。在这种情况下,可以在用户与 UI 交互时调用该命令,并且可以在启用或禁用基础命令时自动启用或禁用 UI。 -ViewModel 可以将命令实现为命令对象(实现接口的 ICommand 对象)。视图与命令的交互可以通过声明方式定义,而无需在视图的代码隐藏文件中编写复杂的事件处理代码。例如,某些控件本身支持命令,并提供一个 Command 属性,该属性可以绑定到 ViewModel 提供的 ICommand 对象的数据。在其他情况下,命令行为可用于将控件与 ViewModel 提供的命令方法或命令对象相关联。 +ViewModel 可以将命令实现为命令对象(实现接口的 `ICommand` 对象)。视图与命令的交互可以通过声明方式定义,而无需在视图的代码隐藏文件中编写复杂的事件处理代码。例如,某些控件本身支持命令,并提供一个 `Command` 属性,该属性可以绑定到 ViewModel 提供的 `ICommand` 对象的数据。在其他情况下,命令行为可用于将控件与 ViewModel 提供的命令方法或命令对象相关联。 -实现 ICommand 接口很简单。Prism 提供了此接口的 DelegateCommand 实现,您可以在应用程序中轻松使用。 +实现 `ICommand` 接口很简单。Prism 提供了此接口的 `DelegateCommand` 实现,您可以在应用程序中轻松使用。 -?> DelegateCommand 可以在 Prism.Core NuGet 包中的 Prism.Commands 命名空间中找到。 +?> `DelegateCommand` 可以在 Prism.Core NuGet 包中的 Prism.Commands 命名空间中找到。 -Prism DelegateCommand 类封装了两个委托,每个委托都引用在 ViewModel 类中实现的方法。它通过调用这些委托来实现 ICommand 接口 Execute 的和 CanExecute 方法。在 DelegateCommand 类构造函数中指定 ViewModel 方法的委托。例如,下面的代码示例演示如何通过指定 OnSubmit 和 CanSubmit ViewModel 方法的委托来构造表示 Submit 命令的 DelegateCommand 实例。然后,该命令通过只读属性向视图公开,该属性返回对 DelegateCommand。 +Prism `DelegateCommand` 类封装了两个委托,每个委托都引用在 ViewModel 类中实现的方法。它通过调用这些委托来实现 `ICommand` 接口 `Execute` 的和 `CanExecute` 方法。在 `DelegateCommand` 类构造函数中指定 ViewModel 方法的委托。例如,下面的代码示例演示如何通过指定 OnSubmit 和 CanSubmit ViewModel 方法的委托来构造表示 Submit 命令的 `DelegateCommand` 实例。然后,该命令通过只读属性向视图公开,该属性返回对 `DelegateCommand`。 ```cs public class ArticleViewModel @@ -34,9 +34,9 @@ public class ArticleViewModel } ``` -在 DelegateCommand 对象上调用 Execute 方法时,它只是通过在构造函数中指定的委托将调用转发给 ViewModel 类中的方法。同样,调用该 CanExecute 方法时,将调用 ViewModel 类中的相应方法。构造函数中方法的 CanExecute 委托是可选的。如果未指定委托, DelegateCommand 则始终返回 true CanExecute 。 +在 `DelegateCommand` 对象上调用 Execute 方法时,它只是通过在构造函数中指定的委托将调用转发给 ViewModel 类中的方法。同样,调用该 `CanExecute` 方法时,将调用 ViewModel 类中的相应方法。构造函数中方法的 `CanExecute` 委托是可选的。如果未指定委托, `DelegateCommand` 则始终 `CanExecute` 返回 `true`。 -该 DelegateCommand 类是泛型类型。type 参数指定传递给 Execute and CanExecute 方法的命令参数的类型。在前面的示例中,命令参数的类型 object 为 。Prism 还提供了该 DelegateCommand 类的非泛型版本,供在不需要命令参数时使用,其定义如下: +该 `DelegateCommand` 类是泛型类型。type 参数指定传递给 `Execute` 和 `CanExecute` 方法的命令参数的类型。在前面的示例中,命令参数的类型 `object` 为 。Prism 还提供了该 `DelegateCommand` 类的非泛型版本,供在不需要命令参数时使用,其定义如下: ```cs public class ArticleViewModel @@ -60,20 +60,20 @@ public class ArticleViewModel } ``` -?>故意 DelegateCommand 阻止使用值类型(int、double、bool 等)。因为 ICommand 需要 object ,所以在命令绑定的 XAML 初始化期间调用 时,具有 的 T 值类型会导致意外行为 CanExecute(null) 。使用 default(T) 被考虑并被拒绝作为解决方案,因为实现者无法区分有效值和默认值。如果希望使用值类型作为参数,则必须使用 DelegateCommand> 或速记 ? 语法 ( DelegateCommand ) 使其可为 null。 +?> `DelegateCommand` 故意阻止使用值类型(int、double、bool 等)。因为 `ICommand` 需要 `object` ,所以在命令绑定的 XAML 初始化期间调用 时,具有 的 `T` 值类型会导致意外行为 `CanExecute(null)` 。使用 `default(T)` 被考虑并被拒绝作为解决方案,因为实现者无法区分有效值和默认值。如果希望使用值类型作为参数,则必须使用 `DelegateCommand>` 或速记 `?` 语法 ( `DelegateCommand` ) 使其可为 null。 # 从视图调用 DelegateCommands -视图中的控件可以通过多种方式与 ViewModel 提供的命令对象相关联。某些 WPF、Xamarin.Forms 和 UWP 控件可以通过 Command 该属性轻松数据绑定到命令对象。 +视图中的控件可以通过多种方式与 ViewModel 提供的命令对象相关联。某些 WPF、Xamarin.Forms 和 UWP 控件可以通过 `Command` 该属性轻松数据绑定到命令对象。 ```