C# WPF绑定到嵌套列表,列表框未更新
我当前正在尝试将我的列表绑定到另一个列表中的另一个对象中的列表。但是在第二个列表框中,这些项目没有出现 XAMLC# WPF绑定到嵌套列表,列表框未更新,c#,wpf,mvvm,binding,C#,Wpf,Mvvm,Binding,我当前正在尝试将我的列表绑定到另一个列表中的另一个对象中的列表。但是在第二个列表框中,这些项目没有出现 XAML MainViewModel: using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Text; using System.Th
MainViewModel:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
namespace Managing_program.model
{
class MainWindowViewModel: ViewModelBase
{
public MainWindowViewModel()
{
// registering all commands
Tables = new ObservableCollection<Table>();
AddTableCommand = new DelegateCommand(ExecuteAddTableCommand, CanExecuteAddTableCommand);
RemoveTableCommand = new DelegateCommand(ExecuteRemoveTableCommand, CanExecuteRemoveTableCommand);
AddFieldCommand = new DelegateCommand(ExecuteAddFieldCommand, CanExecuteAddFieldCommand);
}
String _fieldNameToAdd = String.Empty;
public String FieldNameToAdd {
get { return _fieldNameToAdd; }
set {
_fieldNameToAdd = value;
OnPropertyChanged("FieldNameToAdd");
}
}
String _tableNameToAdd = string.Empty;
public String TableNameToAdd {
get {return _tableNameToAdd;}
set {
_tableNameToAdd = value;
OnPropertyChanged("TableNameToAdd");
}
}
#region allCommands:
// Add Table Command
public ICommand AddTableCommand { get; set; }
private void ExecuteAddTableCommand(object parameter)
{
Tables.Add(new Table(TableNameToAdd));
TableNameToAdd = String.Empty;
}
private bool CanExecuteAddTableCommand(object paramater)
{
if (TableNameToAdd.Length < 1)
return false;
if (TableNameToAdd.Contains(" "))
return false;
foreach (Table table in Tables)
{
if (table.Name.ToLower() == TableNameToAdd)
return false;
}
return true;
}
// Remove Table Command
public ICommand RemoveTableCommand { get; set; }
private void ExecuteRemoveTableCommand(object paramater){
Tables.Remove(SelectedTable);
}
private bool CanExecuteRemoveTableCommand(object parameter)
{
return SelectedTable != null;
}
// AddFieldCommand
public ICommand AddFieldCommand { get; set; }
private void ExecuteAddFieldCommand(object parameter)
{
SelectedTable.Fields.Add(new Field("test"));
}
private bool CanExecuteAddFieldCommand(object parameter)
{
if (SelectedTable == null)
return false;
if (FieldNameToAdd.Length < 1)
return false;
if (FieldNameToAdd.Contains(" "))
return false;
foreach (Field field in SelectedTable.Fields)
{
if (field.Name.ToLower() == FieldNameToAdd.ToLower())
return false;
}
return true;
}
#endregion
public ObservableCollection<Table> Tables { get; private set; }
public Table SelectedTable { get; set; }
public Field SelectedField { get; set; }
}
}
使用系统;
使用System.Collections.Generic;
使用System.Collections.ObjectModel;
使用系统组件模型;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows;
使用System.Windows.Input;
名称空间管理程序.model
{
类MainWindowViewModel:ViewModelBase
{
公共主窗口视图模型()
{
//注册所有命令
Tables=新的ObservableCollection();
AddTableCommand=新的DelegateCommand(ExecuteAddTableCommand、CanExecuteAddTableCommand);
RemoveTableCommand=新的DelegateCommand(ExecuteRemoveTableCommand、CanExecuteRemoveTableCommand);
AddFieldCommand=新的DelegateCommand(ExecuteAddFieldCommand、CanExecuteAddFieldCommand);
}
String _fieldNameToAdd=String.Empty;
要添加的公共字符串字段名{
获取{return\u fieldNameToAdd;}
设置{
_fieldNameToAdd=值;
OnPropertyChanged(“FieldNameToAdd”);
}
}
String _tableNameToAdd=String.Empty;
要添加的公共字符串表名{
获取{return\u tablename toadd;}
设置{
_tableNameToAdd=值;
关于财产变更(“表名添加”);
}
}
#区域所有命令:
//添加表格命令
公共ICommand AddTableCommand{get;set;}
私有void executeadTableCommand(对象参数)
{
表。添加(新表(表名添加));
TableNameToAdd=String.Empty;
}
私有布尔CanExecuteAddTableCommand(对象参数)
{
如果(表名添加长度<1)
返回false;
if(TableNameToAdd.Contains(“”)
返回false;
foreach(表中的表)
{
if(table.Name.ToLower()==TableNameToAdd)
返回false;
}
返回true;
}
//删除表格命令
公共ICommand RemoveTableCommand{get;set;}
私有void executemovetable命令(对象参数){
表。删除(SelectedTable);
}
私有bool CanExecuteRemoveTableCommand(对象参数)
{
返回SelectedTable!=null;
}
//AddFieldCommand
公共ICommand AddFieldCommand{get;set;}
私有void ExecuteAddFieldCommand(对象参数)
{
SelectedTable.Fields.Add(新字段(“测试”));
}
私有bool CanExecuteAddFieldCommand(对象参数)
{
如果(SelectedTable==null)
返回false;
如果(字段名添加长度<1)
返回false;
if(FieldNameToAdd.Contains(“”)
返回false;
foreach(SelectedTable.Fields中的字段)
{
if(field.Name.ToLower()==FieldNameToAdd.ToLower())
返回false;
}
返回true;
}
#端区
公共可观测集合表{get;private set;}
公共表SelectedTable{get;set;}
公共字段SelectedField{get;set;}
}
}
表格类别:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Managing_program.model
{
class Table
{
public Table(String name)
{
Name = name;
Fields = new ObservableCollection<Field>();
}
public String Name { get; private set; }
public ObservableCollection<Field> Fields { get; private set; }
}
}
使用系统;
使用System.Collections.Generic;
使用System.Collections.ObjectModel;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Managing_program.model
{
class Table
{
public Table(String name)
{
Name = name;
Fields = new ObservableCollection<Field>();
}
public String Name { get; private set; }
public ObservableCollection<Field> Fields { get; private set; }
}
}