2016-01-26 19 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你命令。 –

回答

相关问题