如何解决使用ItemsSource时操作无效改为使用ItemsControl.ItemsSource访问和修改元素
你绑定ItemsSource
在一个属性DataContext
叫Items
,所以要更新集合,你需要去Items
的财产DataContext
和清除。
另外,该Items
属性的类型必须为ObservableCollection
,List
如果您希望在基础集合发生更改时更新UI ,则不需要。
您ItemsSource
不需要在后面的代码中设置代码的位,因此应将其删除。您只需要将其设置ItemsSource
在一个位置,而不是两个都设置。
这是一个如何工作的简单示例:
// Using Students instead of Items for the PropertyName to clarify
public ObservableCollection<Student> Students { get; set; }
public MyConstructor()
{
...
Students = search.students();
listBoxSS.DataContext = this;
}
现在,当您拥有:
<ListView ItemsSource="{Binding Students}" ... />
您将绑定ItemsSource
到ObservableCollection<Student>
,并且要清除列表时可以调用:
Students.Clear()
解决方法
我是Binding和WPF的新手,我已经学习了如何listBox
使用Binding技术创建具有多列的
<ListView ItemsSource="{Binding Items}" Margin="306,70,22,17" MouseDoubleClick="listBoxSS_MouseDoubleClick" Name="listBoxSS" >
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="first_name " Width="100" DisplayMemberBinding="{Binding Path=First_name}" />
<GridViewColumn Header="last_name" Width="100" DisplayMemberBinding="{Binding Path=Last_name}" />
<GridViewColumn Header="phone_number" Width="100" DisplayMemberBinding="{Binding Path=Phones[0]}" />
<GridViewColumn Header="notes" Width="100" DisplayMemberBinding="{Binding Path=Notes}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
这是代码:
List<Student> arr = search.students();
listBoxSS.ItemsSource = arr;
但是问题是当我尝试使用添加或删除项目或清除时
listBoxSS.Items.Clear();
请提供使用物品来源或添加,删除物品或清除列表的方式的示例。
编辑:
<ListView ItemsSource="{Binding Items}" Margin="306,17" MouseDoubleClick="listBoxSS_MouseDoubleClick" Name="listBoxSS" >
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="first_name " Width="100" DisplayMemberBinding="{Binding Path=First_name}" />
<GridViewColumn Header="last_name" Width="100" DisplayMemberBinding="{Binding Path=Last_name}" />
<GridViewColumn Header="phone_number" Width="100" DisplayMemberBinding="{Binding Path=Phones[0]}" />
<GridViewColumn Header="notes" Width="100" DisplayMemberBinding="{Binding Path=Notes}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
这是代码:
ObservableCollection<Employee> Gemployees;
var employees = new ObservableCollection<Employee>(search.employees());
search.employees()
获取我数据库中所有员工的列表
listBoxPE.ItemsSource = employees;
Gemployees = employees;
现在我可以对Gemployees执行所有方法
Gemployees.Remove((Student)listBoxSS.SelectedItem);
Gemployees.Add((Student)listBoxSS.SelectedItem);
该ListView
每当我添加或删除Gemployees的项目进行刷新!很酷,但在绑定方面仍然有些艰苦。现在,我正在为每个ListView做一个接口类,以便可以将其放入其中。它不会在添加项目中表现出任何灵活性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。