Wpf 如何使用新项目更新listView?
我有两个字段Wpf 如何使用新项目更新listView?,wpf,listview,mvvm,Wpf,Listview,Mvvm,我有两个字段 <Grid> <Grid.RowDefinitions> <RowDefinition Height="60*" /> <RowDefinition Height="20*" /> <RowDefinition Height="20*" /> </Grid.RowDefinitions> <ListBox ItemsSource="
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
字符串名称
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
及
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
int-Age
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
当用户按下
按钮时,如何将此信息添加到绑定到列表视图的集合中 下面是一个简单的例子。它假定使用本文中描述的RelayCommand和ObservableObject类
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
MainWindow.xaml
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
最后,创建一个简单的viewModel来处理信息
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class AppViewModel : ObservableObject
{
private int _age;
private string _name;
private RelayCommand _AddPersonCommand;
private ObservableCollection<Person> _people = new ObservableCollection<Person>()
{
new Person { Name="Ben", Age=26 },
new Person { Name="George", Age=40 },
new Person { Name="Amy", Age=38 },
new Person { Name="April", Age=22 },
new Person { Name="Mick", Age=45 },
new Person { Name="Steph", Age=32 },
new Person { Name="Mel", Age=35 },
new Person { Name="Emma", Age=28 },
};
public IEnumerable People
{
get { return _people; }
}
public ICommand AddPersonCommand
{
get
{
if (_AddPersonCommand == null)
{
_AddPersonCommand = new RelayCommand(p=> this.AddPerson());
}
return _AddPersonCommand;
}
}
public string Name
{
get { return _name; }
set
{
_name = value;
NotifyPropertyChanged("Name");
}
}
public int Age
{
get { return _age; }
set
{
_age = value;
NotifyPropertyChanged("Age");
}
}
private void AddPerson()
{
Person p = new Person();
p.Name = _name;
p.Age = _age;
_people.Add(p);
}
}
公共类AppViewModel:observeObject
{
私人互联网;
私有字符串\u名称;
私人中继命令_AddPersonCommand;
私人ObservableCollection_people=新ObservableCollection()
{
新人{Name=“Ben”,年龄=26},
新人{Name=“George”,年龄=40},
新人{Name=“Amy”,年龄=38},
新人{Name=“April”,年龄=22},
新人{Name=“Mick”,年龄=45},
新人{Name=“Steph”,年龄=32},
新人{Name=“Mel”,年龄=35},
新人{Name=“Emma”,年龄=28},
};
公众人数
{
获取{return\u people;}
}
公共ICommand AddPersonCommand
{
得到
{
if(_AddPersonCommand==null)
{
_AddPersonCommand=newrelayCommand(p=>this.AddPerson());
}
返回_AddPersonCommand;
}
}
公共字符串名
{
获取{return\u name;}
设置
{
_名称=值;
NotifyPropertyChanged(“名称”);
}
}
公共信息
{
获取{return\u age;}
设置
{
_年龄=价值;
通知财产变更(“年龄”);
}
}
个人
{
人员p=新人员();
p、 名称=_名称;
p、 年龄=_年龄;
_新增(p);
}
}
下面是一个简单的例子。它假定使用本文中描述的RelayCommand和ObservableObject类
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
MainWindow.xaml
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
最后,创建一个简单的viewModel来处理信息
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*" />
<RowDefinition Height="20*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<ListBox ItemsSource="{Binding People}"
Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Name:</Label>
<Label Grid.Row="1">Age:</Label>
<TextBox Grid.Column="1"
Margin="5"
Text="{Binding Name}"/>
<TextBox Grid.Column="1"
Grid.Row="1"
Margin="5"
Text="{Binding Age}"/>
</Grid>
<Button Grid.Row="2"
Margin="5"
Command="{Binding AddPersonCommand}">Add Person</Button>
</Grid>
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class AppViewModel : ObservableObject
{
private int _age;
private string _name;
private RelayCommand _AddPersonCommand;
private ObservableCollection<Person> _people = new ObservableCollection<Person>()
{
new Person { Name="Ben", Age=26 },
new Person { Name="George", Age=40 },
new Person { Name="Amy", Age=38 },
new Person { Name="April", Age=22 },
new Person { Name="Mick", Age=45 },
new Person { Name="Steph", Age=32 },
new Person { Name="Mel", Age=35 },
new Person { Name="Emma", Age=28 },
};
public IEnumerable People
{
get { return _people; }
}
public ICommand AddPersonCommand
{
get
{
if (_AddPersonCommand == null)
{
_AddPersonCommand = new RelayCommand(p=> this.AddPerson());
}
return _AddPersonCommand;
}
}
public string Name
{
get { return _name; }
set
{
_name = value;
NotifyPropertyChanged("Name");
}
}
public int Age
{
get { return _age; }
set
{
_age = value;
NotifyPropertyChanged("Age");
}
}
private void AddPerson()
{
Person p = new Person();
p.Name = _name;
p.Age = _age;
_people.Add(p);
}
}
公共类AppViewModel:observeObject
{
私人互联网;
私有字符串\u名称;
私人中继命令_AddPersonCommand;
私人ObservableCollection_people=新ObservableCollection()
{
新人{Name=“Ben”,年龄=26},
新人{Name=“George”,年龄=40},
新人{Name=“Amy”,年龄=38},
新人{Name=“April”,年龄=22},
新人{Name=“Mick”,年龄=45},
新人{Name=“Steph”,年龄=32},
新人{Name=“Mel”,年龄=35},
新人{Name=“Emma”,年龄=28},
};
公众人数
{
获取{return\u people;}
}
公共ICommand AddPersonCommand
{
得到
{
if(_AddPersonCommand==null)
{
_AddPersonCommand=newrelayCommand(p=>this.AddPerson());
}
返回_AddPersonCommand;
}
}
公共字符串名
{
获取{return\u name;}
设置
{
_名称=值;
NotifyPropertyChanged(“名称”);
}
}
公共信息
{
获取{return\u age;}
设置
{
_年龄=价值;
通知财产变更(“年龄”);
}
}
个人
{
人员p=新人员();
p、 名称=_名称;
p、 年龄=_年龄;
_新增(p);
}
}
我们需要一些代码。您使用的是MVVM框架吗?支持INotify…?我没有什么要显示的-我只是有两个字段的简单ListView,在viewmodel中我想添加新的ListViewItem,我们需要一些代码。您使用的是MVVM框架吗?支持INotify…?我没有什么要显示的-我只是有两个字段的简单ListView,我想在viewmodel中添加新的ListViewItem