2014-01-06 78 views
0

我在主窗口中創建了WPF代碼,現在我想使用MVVM。 我複製所有數據從主窗口的XAML到用戶控制和 創建新的類與在xaml.cs類如何綁定viewModel來查看

在用戶控件類

我添加

代碼視圖模型夾
public UserControl() 
     { 
      InitializeComponent(); 
    this.DataContext = new ModelView(); 
     } 

目前有兩期

1.In我指的ListBox作爲showen下面的主窗口,現在可能是用戶控件不知道這件事,我應該怎麼解決呢?

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.in除了在視圖模型我複製一些代碼從類似方法 DropText_PreviewDragEnter主窗口這是在PREVI,ewDragEnter下面在XAML 審閱和現在有錯誤,我如何應該避免?

<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"/> 
+3

一團糟。您根本沒有正確使用MVVM,您沒有綁定,並且您不瞭解靜態和實例屬性之間的區別。這裏發生的事情太多了。 – Will

回答

1

首先,您將ItemsSource設置在錯誤的位置 - 您需要在UserControl的xaml頁面中設置ItemsSource。

<ListBox ItemsSource="{Binding _UsersList}" 

至於第二個問題 - 你還沒有給我們足夠的幫助。你是否有與該事件相關的事件背後的代碼?

2

關於#1,您引用的是類ListBox,而不是該類的實例。它類似於做類似於:

string =「a」。

你應該做的是在你的xaml中寫一個ListBox,在其中你將綁定它的ItemSource屬性到你的視圖模型中的UserList屬性中。

我建議你在互聯網上找一個綁定列表框來查看概念的例子。

關於#2,您不清楚您正在接收的錯誤是什麼,但請確保您在xaml後面的代碼中實施了DropText_PreviewDragEnter方法。