繁体   English   中英

如何将viewModel绑定到视图

[英]How to bind the viewModel to view

我已经在主窗口中创建了WPF代码,现在我想使用MVVM。 我已经将所有数据从主窗口的xaml复制到用户控件,并使用xaml.cs类中的代码在视图模型文件夹中创建了新类。

在用户控件类中,我添加

public UserControl()
        {
            InitializeComponent();
     this.DataContext = new ModelView();
        }

目前有两个问题

1.在主窗口中,如下图所示,我指的是列表框,现在用户控件可能不知道它,该如何解决?

listBox上的错误是“无法在静态上下文中访问非静态属性项源”。

例如,这里出现以下错误: ListBox.ItemsSource = _UsersList;

class ModelView
    {       
          public ObservableCollection<User> _UsersList = new ObservableCollection<User>();


        public ObservableCollection<User> UserList
        {
            get { return _UsersList; }
        }

        public void initUsers()
        {
            _UsersList.Add(new User {Name = "Mike"});
            _UsersList.Add(new User {Name = "Jhon"});


            ListBox.ItemsSource = _UsersList;
        }

2.另外,在视图模型中,我从主窗口中复制了一些代码,如方法DropText_PreviewDragEnter(该方法在Xvi中的Previ,ewDragEnter中引用),现在出现错误,应如何避免?

    <TextBox x:Name="FullName"  
              AcceptsReturn="True"
              AllowDrop="True" 
              PreviewDragEnter="DropText_PreviewDragEnter"


              HorizontalAlignment="Left" Height="20" Margin="360,70,0,0" TextWrapping="Wrap" Text="" 
              VerticalAlignment="Top" Width="70"/>

关于#1,您引用的是ListBox类,而不是该类的实例。 这类似于做类似的事情:

字符串=“ a”。

您应该做的是在xaml中编写一个ListBox,在其中将其ItemSource属性绑定到视图模型中的UserList属性。

我建议您在Internet上找到一个示例,以绑定列表框以查看该概念。

关于#2,尚不清楚您正在接收什么错误,但是请确保已在xaml后面的代码中实现了DropText_PreviewDragEnter方法。

首先,您将ItemsSource设置在错误的位置-您需要在UserControl的xaml页面中设置ItemsSource。

<ListBox ItemsSource="{Binding _UsersList}"

至于第二个问题-您给我们的帮助不足。 您是否有与该事件关联的事件背后的代码?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM