我有一个用户控件,它有一个名为“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")。
这个的语法是什么?
最佳答案
您应该添加 LoginViewModel
在 DataContext
内你的 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/