2017-01-20 12 views
0

テキストボックスからテキストを追加し、MVVM Wpfを使用してDataGridに追加する方法?テキストボックスからテキストを追加し、MVVMを使用してDataGridに追加する方法Wpf

コード:

public class GtlS4Model : INotifyPropertyChanged 
{ 
    private Double sNo; 
    private Double deliveryNo; 
    private Double srNo; 
    private Double custPartNo; 
    private Double binS4Label; 
    private Double masterData; 

    public double SNo 
    { 
     get 
     { 
      return sNo; 
     } 

     set 
     { 
      sNo = value; 
      OnPropertyChanged("SNo"); 
     } 
    } 

    public double DeliveryNo 
    { 
     get 
     { 
      return deliveryNo; 
     } 

     set 
     { 
      deliveryNo = value; 
      OnPropertyChanged("Delivery_No"); 
     } 
    } 

    public double SrNo 
    { 
     get 
     { 
      return srNo; 
     } 

     set 
     { 
      srNo = value; 
      OnPropertyChanged("SrNo"); 
     } 
    } 

    public double CustPartNo 
    { 
     get 
     { 
      return custPartNo; 
     } 

     set 
     { 
      custPartNo = value; 
      OnPropertyChanged("CustPartNo"); 
     } 
    } 

    public double BinS4Label 
    { 
     get 
     { 
      return binS4Label; 
     } 

     set 
     { 
      binS4Label = value; 
      OnPropertyChanged("BinS4Label"); 
     } 
    } 

    public double MasterData 
    { 
     get 
     { 
      return masterData; 
     } 

     set 
     { 
      masterData = value; 
      OnPropertyChanged("MasterData");   } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    private void OnPropertyChanged (string propertyName) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

} 

ViewModelになりました:

public class GtlS4ViewModel 
{ 
    public ObservableCollection<GtlS4Model> gtls4Label { get; set; } 

    DataTable dt; 
    public void addTables() 
    { 
     dt.Columns.Add("S No."); 
     dt.Columns.Add("Delivery Note"); 
     dt.Columns.Add("Sr No."); 
     dt.Columns.Add("Customer Part No."); 
     dt.Columns.Add("Bin S-4 Label"); 
     dt.Columns.Add("Result"); 
     var row1 = this.dt.NewRow(); 
     var row2 = this.dt.NewRow(); 
     var row3 = this.dt.NewRow(); 
     var row4 = this.dt.NewRow(); 
     var row5 = this.dt.NewRow(); 
     var row6 = this.dt.NewRow(); 
     row1["S No."] = 1; 
     row2["Delivery Note"] = 123456; 
     row3["Sr No."] = 1235143; 
     row4["Customer Part No."] = 56487564; 
     row5["Bin S4 Label"] = 5555656; 
     row6["Result"] = 6556456454564564; 
     this.dt.Rows.Add(row1); 
     this.dt.Rows.Add(row2); 
     this.dt.Rows.Add(row3); 
     this.dt.Rows.Add(row4); 
     this.dt.Rows.Add(row5); 
     this.dt.Rows.Add(row6); 
    } 

    public GtlS4ViewModel() 
    { 
     dt = new DataTable(); 
     gtls4Label = new ObservableCollection<GtlS4Model> 
     { 
      new GtlS4Model {SNo = 1, DeliveryNo= 1325647, SrNo = 1515151, CustPartNo = 32156444, BinS4Label = 56456456, MasterData = 86864564564}, 
     }; 
    }    
} 

VIEW:

<Window x:Class="Gtl_S4_Validator.Views.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:Gtl_S4_Validator.Views" 
     xmlns:vm="clr-namespace:Gtl_S4_Validator.ViewModel" 
     mc:Ignorable="d" 
     Title="Window1" Height="720" Width="525"> 
    <Window.Resources> 
     <vm:GtlS4ViewModel x:Key="ViewModelMain"/> 
    </Window.Resources> 
    <Grid Margin="-4,0,-4,-1"> 
     <TextBox x:Name="txtSno" HorizontalAlignment="Left" Height="24" Margin="97,23,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="82" RenderTransformOrigin="0.666,-0.434"/> 
     <TextBox x:Name="txtDeliveryNo" HorizontalAlignment="Left" Height="21" Margin="97,61,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="82"/> 
     <Label x:Name="label" Content="S. No." HorizontalAlignment="Left" Margin="10,21,0,0" VerticalAlignment="Top"/> 
     <Label x:Name="label1" Content="Delivery Note" HorizontalAlignment="Left" Margin="10,59,0,0" VerticalAlignment="Top"/> 
     <Label x:Name="label2" Content="Sr. No." HorizontalAlignment="Left" Margin="10,100,0,0" VerticalAlignment="Top"/> 
     <Label x:Name="label3" Content="Customer Part no." HorizontalAlignment="Left" Margin="253,23,0,0" VerticalAlignment="Top"/> 
     <TextBox x:Name="txtSrNo" HorizontalAlignment="Left" Height="23" Margin="97,100,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="82"/> 
     <TextBox x:Name="txtCustPartNo" HorizontalAlignment="Left" Height="24" Margin="376,23,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="91"/> 
     <Label x:Name="label4" Content="Bin S-4 Label" HorizontalAlignment="Left" Margin="253,59,0,0" VerticalAlignment="Top"/> 
     <TextBox x:Name="txtBinS4Label" HorizontalAlignment="Left" Height="23" Margin="376,59,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="91"/> 
     <TextBox x:Name="txtMasterData" HorizontalAlignment="Left" Height="23" Margin="376,100,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="91" RenderTransformOrigin="0.337,0.445"/> 
     <Label x:Name="label5" Content="Master Data" HorizontalAlignment="Left" Margin="253,97,0,0" VerticalAlignment="Top"/> 
     <Button x:Name="btnValidate" Content="Validate" HorizontalAlignment="Left" Height="27" Margin="182,141,0,0" VerticalAlignment="Top" Width="131" Click="btnValidate_Click"/> 
     <DataGrid x:Name="GtlS4DataGrid" HorizontalAlignment="Left" Height="408" Margin="10,203,0,0" VerticalAlignment="Top" Width="505" ItemsSource="{Binding gtls4Label}" CanUserAddRows="True"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="S No" Binding="{Binding SNo}"/> 
       <DataGridTextColumn Header="Delivery Note" Binding="{Binding Delivery Note}" /> 
       <DataGridTextColumn Header="Sr No" Binding="{Binding Sr No}" /> 
       <DataGridTextColumn Header="Customer Part No." Binding="{Binding CustomerPartNo }" /> 
       <DataGridTextColumn Header="Bin S4 Label" Binding="{Binding BinS4Label}" /> 
       <DataGridTextColumn Header="Result" Binding="{Binding MasterData}" /> 
      </DataGrid.Columns> 
     </DataGrid> 
     <Button x:Name="btnExport" Content="Export" HorizontalAlignment="Left" Margin="182,616,0,0" VerticalAlignment="Top" Width="75"/> 
     <Button x:Name="btnClear" Content="Clear" HorizontalAlignment="Left" Margin="283,616,0,0" VerticalAlignment="Top" Width="75"/> 

    </Grid> 
</Window> 

私はどのように私はそれが間違ってやっている得ることはありませんが、それは追加されません。ボタンからのデータもまた、私はこの環境にまったく新しいものです。

大変助かります。

+0

あなたが実際にしたいことを明確にしてくださいできますか?グリッド内の各列のテキストボックスがあります。テキストボックスに現在選択されている行の適切な列を表示/更新しますか?テキストボックスにビューモデルのDataTable dtに行を追加しますか?それについて言えば、そのDataTableは私には全く使われていないように見えます。ポイントは何ですか? – ashbygeek

+0

テキストボックスに入力してグリッドに表示するデータの新しい行を追加したいだけです –

+0

はい、データテーブルは完全に使用されていません –

答えて

0

OK、テキストをテキストボックスに入力して、それをデータグリッドに表示したいのですか?

もしそうなら、テキストを新しい行または既存の行に表示しますか?

テキストボックスにテキストを入力すると、イベントを処理できます。

データグリッドをモデル内のプロパティにバインドする必要があります。

テキストボックスが更新されると、データグリッドにバインドされたモデルのプロパティが更新され、ビューが更新されます。

+0

既存のテキストボックスから新しい行にデータを追加します。しかし、私は環境に新しいので、私はそれを行うことができません! –

0

データグリッドの「can user add new row」プロパティをtrueに設定するだけで、データグリッドに新しいエントリを作成するための空白の行が常に下に表示されます。ここにマイクロソフトの公式ページがあります:https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.canuseraddrows(v=vs.110).aspx

+0

はい、ボタンのトラフのmvvmパターンをクリックすると、テキストボックスの値を追加します。 –

関連する問題