如何绑定viewModel以进行查看

时间:2014-01-06 20:46:33

标签: c# wpf xaml mvvm listbox

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

在用户控件类中添加

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

目前有两个问题

1.在主窗口中我引用ListBox如下图所示,现在可能用户控件不知道它,我该如何解决呢?

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.另外在视图模型中我从主窗口复制了一些代码,就像方法一样 在Previ中使用的DropText_PreviewDragEnter,以下在XAML中的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"/>

2 个答案:

答案 0 :(得分:2)

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

string =“a”。

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

我建议你在互联网上找到一个绑定列表框以查看概念的例子。

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

答案 1 :(得分:1)

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

<ListBox ItemsSource="{Binding _UsersList}"

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

相关问题