2014-05-15 124 views
0

實際上,我有一個小的wpf應用程序,它有一個DataGrid窗口,我無法用對象填充它。從項目列表中填充DataGrid

在我的ViewModel類我有這樣的:

 public class UserViewModel : INotifyPropertyChanged 
     { 
      public UserViewModel() 
      { 
       User myUser = new User(); 
      } 
      ... 

     } 

注意對象MYUSER有3個屬性:ID,名稱和註釋這是一個包含其他屬性的列表:NoteID,接下來NoteTitle,NoteDescription。

<Window.DataContext> 
     <local:UserViewModel/> 
    </Window.DataContext> 
    <DataGrid Name="noteDataGrid" ItemsSource="{Binding DataContext}" AutoGenerateColumns="True"> 
     <DataGrid.Columns > 
      <DataGridTextColumn Binding="{Binding Path=NoteID}" Header="ID"/> 

      <DataGridTextColumn Binding="{Binding Path=Title}" Header="Title"/> 

      <DataGridTextColumn Binding="{Binding Path=Description}" Header="Desc"/> 
     </DataGrid.Columns> 
    </DataGrid> 

就是這樣,我知道有一些不匹配,但是這是我的第一個WPF(MVVM)應用程序,這就是爲什麼我會很高興能有一個解決方案。

問候

+0

必須有一些你必須嘗試綁定到Datagrid的集合。請發佈一些你的View Model的更多代碼。 – Dineshreddybandi

回答

1
  1. 在你的虛擬機,你必須揭露一些集合,也就是說,List<User> Users。重要提示:必須是是屬性。
  2. 然後只需在您的構造函數中添加項目到這個集合。
  3. 將此集合綁定到DataGridItemsSource="{Binding Users}"
  4. Voila。

此外,AutoGenerateColumns="True"將複製您的列(您手動和自動添加它們)。

+0

感謝您的回答(解決了我的問題),但是我還有一個問題,如果我不在虛擬機構造函數中添加項目到我的列表中,但是稍後在虛擬機中的某些其他方法中,這可能嗎? – Ali

+1

@Ali是的,但你必須使用'ObservableCollection '而不是'List'。 – amnezjak