2016-01-26 54 views
2

我在練MVVM應用程序,我是初學者,我所要做的是,我有一個網格3行數據網格,第一行會包含3個標籤和3個對應​​的按鈕。第二行將包含一個按鈕,用於將輸入到該文本框中的數據保存在第一行中。第三行將包含具有相同數量和類型的文本框(三個)的數據網格。如何更新動態使用MVVM在我的情況

看都可以在這裏http://prntscr.com/9v2336

看到的用戶將在第一行輸入數據,然後他會按保存在第二排按鈕,然後他必須找到相應的數據網格列中的書面資料。

我的嘗試是在這裏(整個代碼):

查看:

<Window x:Class="WpfApplication4.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition></RowDefinition> 
      <RowDefinition Height="30"></RowDefinition> 
      <RowDefinition></RowDefinition> 
     </Grid.RowDefinitions> 
     <Grid Grid.Row="0"> 
      <Grid.RowDefinitions> 
       <RowDefinition></RowDefinition> 
       <RowDefinition></RowDefinition> 
       <RowDefinition></RowDefinition> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition></ColumnDefinition> 
       <ColumnDefinition></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <TextBox Grid.Column="1" Grid.Row="0" Text="{Binding TextName}" Height="20" Width="80" HorizontalAlignment="Center"></TextBox> 
      <TextBox Grid.Column="1" Grid.Row="1" Text="{Binding RollNumber}" Height="20" Width="80"></TextBox> 
      <TextBox Grid.Column="1" Grid.Row="2" Text="{Binding Class}" Height="20" Width="80"></TextBox> 
      <Label Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center">Name</Label> 
      <Label Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">RollNumber</Label> 
      <Label Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center">Class</Label> 
     </Grid> 
     <Grid Grid.Row="1" > 
      <Button Width="80" Height="20" Command="{Binding saveStudentRecord}"> Save</Button> 
     </Grid> 
     <Grid Grid.Row="2"> 
      <DataGrid ItemsSource="{Binding DGrid}"> 
       <DataGrid.Columns> 
        <DataGridTextColumn Header="Name" Binding="{Binding dgName}" Width="150"></DataGridTextColumn> 
        <DataGridTextColumn Header="Rollnumber" Binding="{Binding dgRollnumber}" Width="150"></DataGridTextColumn> 
        <DataGridTextColumn Header="Class" Binding="{Binding dgClass}" Width="150"></DataGridTextColumn> 
       </DataGrid.Columns> 
      </DataGrid> 
     </Grid> 
    </Grid> 
</Window> 

型號:

class Model 
    { 
     private string textName; 
     public string TextName 
     { 
      get { return textName; } 
     } 

     private string rollNumber; 
     public string RollNumber 
     { 
      get { return rollNumber; } 
     } 
     private string cclass; 
     public string Class 
     { 
      get { return cclass; } 
     } 
    } 

視圖模型:

class ViewModel 
    { 
     public bool canExecute { get; set; } 
     private RelayCommand saveStudentRecord; 
     private ObservableCollection<Model> dGrid; 
     public ViewModel() 
     { 

     } 

     private void MyAction() 
     { 
      //What to do here to pass all that data to the datagrid corresponding columns 
     }  
    } 

我在哪裏有問題? 我設計了整個身體,但我沒能找到邏輯,我怎麼會在文本框中輸入的數據分配到按鈕單擊事件對應的數據網格列,並且僅使用MVVM結合他們

+1

您需要將DataGrid綁定到一個集合,也許是一個ObservableCollection,然後更新的ObservableCollection你命令。 –

回答

相關問題