[英]how to focus on the keyboard on a textbox in WPF listview after item.refresh
[英]How to refresh a listview control after editting an item?
我开始玩 wpf listview 控件。 我创建了一个“添加”按钮和一个“编辑”按钮。 “添加”按钮按预期工作 - 每当我向列表中添加新项目时,它就会显示出来。 我的问题是“编辑”按钮 - 通知 listView 控件某个项目已更改的正确方法是什么? (它适用于附加的代码,我只是想知道是否有更好的方法)
这是我的代码:
Xml:
<Window x:Class="WpfApplication5.MainWindow" Name="This"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
>
<Grid>
<ListView Name="Mylist"
ItemsSource= "{Binding ElementName=This, Path=People}"
SelectionMode="Single"
>
<ListView.View>
<GridView AllowsColumnReorder="false">
<GridViewColumn
Header="Name"
Width="Auto"
DisplayMemberBinding="{Binding Path=Name}" />
<GridViewColumn
Header="Id"
Width="Auto"
DisplayMemberBinding="{Binding Path=Id}" />
</GridView>
</ListView.View>
</ListView>
<StackPanel Orientation="Horizontal" Height="45" Margin="190,133,197,133">
<Button
Content="Add"
Click="AddButton_Click"
/>
<Button
Content="Edit"
Click="EditButton_Click"
/>
</StackPanel>
</Grid>
</Window>
背后的代码:
namespace WpfApplication5
{
public class PersonalDetails
{
public string Name {get; set;}
public string Id {get; set;}
}
public partial class MainWindow : Window
{
private ObservableCollection<PersonalDetails> people = new ObservableCollection<PersonalDetails>();
public ObservableCollection<PersonalDetails> People
{
get { return this.people; }
}
public MainWindow()
{
PersonalDetails p1 = new PersonalDetails();
p1.Name = "Jeff";
p1.Id = "111";
people.Add(p1);
InitializeComponent();
}
private void AddButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
PersonalDetails p2 = new PersonalDetails();
p2.Name = "Tom";
p2.Id = "222";
people.Add(p2);
}
private void EditButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
PersonalDetails pItem = (PersonalDetails)Mylist.SelectedItem;
if (pItem == null)
{
return;
}
pItem.Name = "Dan";
Mylist.Items.Refresh();
}
}
}
您的 PersonalDetails 类应该实现INotifyPropertyChanged接口。
然后,当Name
属性更改并且您引发PropertyChanged
事件时,WPF 绑定基础结构将通过刷新演示文稿来响应。
XAML:
<ListView Name="listResult" ItemsSource="{Binding ItemsCollection}"></ListView>
背后的代码:
private ObservableCollection<object> itemsCollection = new ObservableCollection<object>();
public ObservableCollection<object> ItemsCollection
{
get { return this.itemsCollection; }
}
private void UpdateSectionsList()
{
List<object> tempList = ... //Put your element here
// clear the list before and reload the object you want to display
itemsCollection.Clear();
if (tempList.Count > 0)
{
foreach (object item in tempList)
{
itemsCollection.Add(item);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.