c# - 在隐藏代码公开的 ViewModel 上设置子属性的 WPF XAML 语法是什么?

标签 c# wpf xaml mvvm

我有一个用户控件,它有一个名为“LoginViewModel”的属性。它包含控件绑定(bind)到的 View 模型的实例。

LoginViewModel 有一个名为“UserName”的属性(该类实现了 INotifyPropertyChanged)。

当我在另一个页面上使用用户控件时,我希望能够通过 XAML 设置 LoginViewModel 属性上的一些属性。我似乎无法想出正确的语法。我可以直接在代码隐藏中公开这些并像这样设置它们:

<rcs:LoginComponent x:Name="Login" UserName="Test"></rcs:LoginComponent>

但是我基本上必须从我的 ViewModel 中复制所有属性,这很愚蠢。

我已经尝试过这种变化:
<rcs:LoginComponent x:Name="Login">
   <rcs:LoginViewModel UserName="Test"></rcs:LoginViewModel>
</rcs:LoginComponent>

但是随后控件不呈现(但没有错误)。我最终得到了一个将命名空间显示到 View 模型的控件(例如 MyApp.Components.LoginViewModel")。

这个的语法是什么?

最佳答案

您应该添加 LoginViewModelDataContext 内你的 UserControl 的标签是这样的:

<rcs:LoginComponent x:Name="Login">
   <rcs:LoginComponent.DataContext>
      <rcs:LoginViewModel UserName="Test"/>
   </rcs:LoginComponent.DataContext>
</rcs:LoginComponent>

关于c# - 在隐藏代码公开的 ViewModel 上设置子属性的 WPF XAML 语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21663706/

相关文章:

c# - 如何在 MVC Web API 发布方法中将 ModelState 错误返回给 Kendo 网格?

c# - Entity Framework 和 Automapper 中的数据投影

IsEnabled 上的 WPF 按钮样式背景图像交换

c# - 使用 TabControl 和 MVVM 时绑定(bind)丢失

WPF XAML 定义的 MenuItem 重用开始工作,然后消失

wpf - 自定义 Mahapps.MetroWindow 关闭按钮

c# - 快速构建缓存键

c# - WP8 : Local Storage or Isolated Storage to store data?

c# - WPF 中的 XAML 是否等同于 Windows 窗体应用程序中的 .Designer.cs?

c# - 为什么使用 DataTemplates 时 ViewModel 的 ObservableCollection 没有显示在 View 中?