Wpf table.defaultview和listview.itemsource之间是否存在双向绑定?
我有一个stackpanel,在代码隐藏中创建了多个用户控件。当我生成这些usercontrols时,应用程序中有一些表正在被数据填充,然后我单击一个按钮,在后面的代码中,我想获取表中填充的数据,但当我逐步执行代码时,表似乎没有被刷新/更新/填充新数据。我是否需要将某些内容设置为双向绑定或更新某些内容? 这是我的密码Wpf table.defaultview和listview.itemsource之间是否存在双向绑定?,wpf,listview,data-binding,Wpf,Listview,Data Binding,我有一个stackpanel,在代码隐藏中创建了多个用户控件。当我生成这些usercontrols时,应用程序中有一些表正在被数据填充,然后我单击一个按钮,在后面的代码中,我想获取表中填充的数据,但当我逐步执行代码时,表似乎没有被刷新/更新/填充新数据。我是否需要将某些内容设置为双向绑定或更新某些内容? 这是我的密码 private void TestGridValues_OnClick(object sender, RoutedEventArgs e) { StackP
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);
}
}
不要在WPF的过程代码中创建或操作UI元素。这就是XAML的用途。创建一个适当的视图模型,并使用
ItemsControl
。如果列的数量及其标题是由运行时生成的多个列表决定的,那么可以这样做吗?我宁愿使用DataGrid AutoGenerateColumns=“True”
,但我指的是StackPanel问题,而不是ListView。