コードビハインドで複数のユーザーコントロールが作成されたスタックパネルがあります。これらのユーザーコントロールを生成すると、アプリにデータが入力されているテーブルがあり、ボタンをクリックすると、コードビハインドでテーブルに入力されたデータを取得したいのですが、コードをステップスルーすると、テーブルは新しいデータで更新/更新/入力されています。何かを双方向バインディングまたは更新に設定する必要がありますか? これが私のコードです。
private void TestGridValues_OnClick(object sender, RoutedEventArgs e)
{
StackPanel stackPanel = this.TestGrids;
foreach (UserControl child in stackPanel.Children)
{
Grid content = child.Content as Grid;
ListView view = content.Children[0] as ListView;
ItemCollection itemCollection = view.Items;
DataRowView dataRowView = itemCollection.CurrentItem as DataRowView;
DataTable dataTable = dataRowView.DataView.Table;
}
}
private void MakeGridviewColumns(DataTable table)
{
this.ModelerListView.ItemsSource = table.DefaultView;
GridView gv = new GridView();
this.ModelerListView.View = gv;
// add the date column to gridview
GridViewColumn dateColumn = new GridViewColumn();
dateColumn.Header = "Date";
gv.Columns.Add(dateColumn);
dateColumn.DisplayMemberBinding = new Binding("Date");
foreach (DataColumn dataColumn in table.Columns)
{
if (dataColumn.ColumnName == "Date")
continue;
GridViewColumn gvc = new GridViewColumn();
gvc.Header = dataColumn.ColumnName;
DataTemplate dt = new DataTemplate();
FrameworkElementFactory txtBoxElement = new FrameworkElementFactory(typeof(TextBox));
Binding bind = new Binding();
bind.Path = new PropertyPath("Text");
bind.Mode = BindingMode.TwoWay;
txtBoxElement.SetBinding(TextBox.TextProperty, bind);
txtBoxElement.SetValue(TextBox.TextProperty, "test");
dt.VisualTree = txtBoxElement;
gvc.CellTemplate = dt;
gv.Columns.Add(gvc);
}
}