我正在使用MVVM模式在WPF/C#中编写表单,并尝试与用户控件共享数据。 (好吧,用户控件 View 模型)

我要么需要:

  • 在父级中创建一个View模型并将其绑定(bind)到用户控件
  • 将某些类与Xaml中的 View 模型
  • 绑定(bind)
  • 被告知用户控件无法与MVVM配合使用,并且无法朝正确的方向推进。 (我看过数据模板,但它们看起来并不理想)

  • 用户控件仅用于使大型表单更易于管理,因此我不确定这是否是MVVM的方法,这就是我过去的做法。

    我想通过Xaml中的VM结构类。
    <TabItem Header="Applicants">
         <Views:ApplicantTabView>
             <UserControl.DataContext>
                 <ViewModels:ApplicantTabViewModel Client="{Binding Client} />
             </UserControl.DataContext>
         </Views:ApplicantTabView>
     </TabItem>
    

    public ClientComp Client
        {
            get { return (ClientComp)GetValue(ClientProperty); }
            set { SetValue(ClientProperty, value); }
        }
    
    public static readonly DependencyProperty ClientProperty = DependencyProperty.Register("Client", typeof(ClientComp),
                                                                               typeof(ApplicantTabViewModel),
                                                                                           new FrameworkPropertyMetadata
                                                                                               (null));
    

    但是我似乎无法获得依赖属性来接受非静态内容。

    这对我来说已经是一个问题了,但是假设我会发现但是失败了,所以我在这里。

    提前致谢,
    奥利

    最佳答案

    我最近回答了一个与您类似的问题:passing a gridview selected item value to a different ViewModel of different Usercontrol

    本质上是设置一个依赖项属性,该属性允许父 View 中的数据保留到子用户控件中。实际上,将 View 抽象为特定的用户控件并使用依赖项属性和MVVM模式进行挂钩非常强大,建议在Silverlight/WPF开发中使用它,尤其是在进行单元测试时。如果您想进一步澄清,请告诉我,希望这会有所帮助。

    关于wpf - 将数据传递到mvvm用户控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9548812/

    10-11 15:38