在wpf应用程序中,我有选项卡,其中有下拉菜单。下拉列表中有不同的表格。所有表格都有不同的列。我想要实现以下功能,如何根据下拉值选择创建动态网格
1)基于下拉选择显示一个网格,包含选定表格的所有列。 2)添加一个新行到该表 3)编辑所选表
我新的WPF,这将是真正伟大的,如果有人能建议我应该是什么好办法一列?
在wpf应用程序中,我有选项卡,其中有下拉菜单。下拉列表中有不同的表格。所有表格都有不同的列。我想要实现以下功能,如何根据下拉值选择创建动态网格
1)基于下拉选择显示一个网格,包含选定表格的所有列。 2)添加一个新行到该表 3)编辑所选表
我新的WPF,这将是真正伟大的,如果有人能建议我应该是什么好办法一列?
假设使用的是MVVM: 1.绑定组合框selectedItem设置一个属性如下:
public int SelectedItem
{
get
{
return _selecteditem;
}
set
{
if (_selectedItem != value)
{
_selectedItem = value;
RaisePropertyChanged("SelectedItem");
UpdateGridData();
}
}
}
当选择改变UpdateGridData方法被调用。更新绑定到UpdateGridData方法中的数据网格ItemsSource的集合。
例如:让你的DataGrid被绑定到的声明如下的集合称为MyCustomCollection:
public ICollectionView MyCustomCollection
{
get;
set;
}
您的XAML看起来如下:
<DataGrid ItemsSource="{Binding MyCustomCollection}" .../>
在您的视图模型实现UpdateGridData ()如下:
void UpdateGridData()
{
//resultfromDatabase is the collection from which the data based on the selected item is added to
var resultDataFromDatabase = GetDataFromDatabase(this.SelectedItem);
MyCustomCollection = CollectionViewSource.GetDefaultView(resultDataFromDatabase);
}
要添加新行,只需调用DataGrid ItemsSource绑定到的集合的源的Add()方法即可。您还应该查看数据网格的CanUserAddRows属性。
编辑datagrid使焦点更改时简单的网格可编辑和保存数据。或者,您可以在DataGrid中创建一个DataGridTemplateColumn并在其中添加一个自定义编辑按钮,该按钮可以启用对该行的编辑或打开一个新的模式窗口,您可以在其中编辑字段并将其保存。
希望这会有所帮助。
请不要忘记投票,如果答案已经帮助和标记为答案,如果这回答了你的问题。
非常感谢您的回复。是的,我正在使用MVVM。用这种方法应该怎么看?我应该使用AutoGenerateColumns =“True”创建DataGrid吗? – S52
不需要。除非要向集合中添加新列,否则不必拥有AutoGenerateColumns。我假设你需要添加行而不是列。另外,当你创建DataGridTemplateColumn来通过模态窗口进行编辑时,你必须通过XAML来完成。 * <按钮内容= “编辑”/> DataTemplate中> DataGridTemplateColumn> * –
RamyaN
是的,我想要在显示选定的表格后将行添加到网格中。可能我忘记提及,下拉列表中的所有表格在数据库中都有大约100行(最大)。所以一旦我从下拉列表中选择anytable,它应该显示来自数据库的所有值,然后我应该可以编辑并向其添加新行。所以你说的很清楚,但我对这个观点该如何应该感到困惑?由于每个表都有不同的列 – S52