2016-01-30 38 views
2

我有一個wpf表單,其中一個DataGrid,另一個wpf表單的形式爲TextBoxes將DataGrid的行傳遞給另一個wpf表單c#

我想將選定行的每個單元格的每個值傳遞給另一個表單,但我不知道如何使用wpf來執行此操作。

在wpf Form2中,我想將這些值放入TextBox進行編輯,然後更新Form1的行以及連接的DataSet

如何解決這個問題?

感謝

+0

數據模型的外觀如何? DataGrid的數據源是什麼樣的? – AnjumSKhan

回答

2

它看起來像您使用的是DataSetDataGrid

  1. 獲取使用Binding所選擇的行(SelectedItem)。

  2. 將此ChosenItem作爲ref發送給其他窗體/窗口。

  3. 設置此發送ChosenItem作爲表格網格的DataContext

現在,當您更改Form2中的值時,更改將反映回form1。

例如代碼,

Form1中

<Grid> 
     <DataGrid x:Name="Dgrid" HorizontalAlignment="Left" Margin="10,31,0,0" VerticalAlignment="Top" SelectedItem="{Binding ChosenItem}" />    
     <Button Content="Edit" HorizontalAlignment="Left" Margin="10,4,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/> 
    </Grid> 

Form1中的代碼隱藏

public partial class MainWindow : Window 
{ 
    DataStore ds = new DataStore(); 

    public MainWindow() 
    { 
     InitializeComponent(); 

     Dgrid.DataContext = ds; 
     Dgrid.ItemsSource = ds.DataSource.Tables[0].DefaultView; 
    } 

    private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     DataRowView item = ds.ChosenItem; 
     Window1 w = new Window1(ref item); // send selected row as ref to other form 
     w.Show(); 
    } 
} 

    public class DataStore 
    { 
     public DataRowView ChosenItem { get; set; } 

     public DataStore() 
     { 
      DataTable table1 = new DataTable(); 
      table1.Columns.Add(new DataColumn("Name", typeof(string))); 
      table1.Columns.Add(new DataColumn("Address", typeof(string))); 

      DataRow row = table1.NewRow(); 
      row["Name"] = "Name1"; 
      row["Address"] = "203 A"; 
      table1.Rows.Add(row); 

      row = table1.NewRow(); 
      row["Name"] = "Deepak"; 
      row["Address"] = "BHEL Bhopal"; 
      table1.Rows.Add(row); 

      ds.Tables.Add(table1); 
     } 

     DataSet ds = new DataSet(); 
     public DataSet DataSource { get { return ds; } } 
    } 

窗體2

 <Grid x:Name="FormGrid" DataContext="{Binding SelectedItem, ElementName=Dgrid}"> 
      <TextBox HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="{Binding Name}" VerticalAlignment="Top" Width="120"/> 
      <TextBox HorizontalAlignment="Left" Height="23" Margin="0,49,0,0" TextWrapping="Wrap" Text="{Binding Address}" VerticalAlignment="Top" Width="120"/> 
      <Button Content="Button" HorizontalAlignment="Left" Margin="0,100,0,0" VerticalAlignment="Top" Width="75"/> 
     </Grid> 

窗體2代碼隱藏

public Window1(ref DataRowView item) 
{ 
    InitializeComponent(); 
    FormGrid.DataContext = item; 
} 
+0

非常感謝。現在它的作品! – LenJack

+1

在這種情況下,我怎麼才能更新DataGrid只有當我點擊更新按鈕?因爲現在如果我編輯Form2上的TexBoxes,Form1是自動更新。但我想等待點擊更新按鈕。 – LenJack

相關問題