首先感谢StackOverFlow中的人们给予机会,你们真的很棒,我在Windows 10通用应用程序中非常初学者,我创建的应用程序具有员工类,例如在models文件夹中让我们说如下:
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
}
在xaml中我创建了AutoSuggestBox和listView,它绑定到类型为Employee的ObervableCollection列表,如下所示:
<ListView ItemsSource="{x:Bind EmployeesList}"
HorizontalAlignment="Left">
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:Employee">
<StackPanel Orientation="Horizontal">
<CheckBox Checked="StatusCB_Checked"
Margin="5,2,5,0"/>
<TextBlock Name="EmpNametxtBlk"
Text="{x:Bind Name}"
VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
现在,当我在AutoSuggestBox中输入名称时,列表视图将显示checkBox和员工姓名,我想检查复选框,我想让员工对象从列表视图中删除,然后添加到另一个列表看看对于所选员工,我的问题是如何将checkBox绑定到员工ID,然后我可以在后面的代码中使用该对象来检查事件?我的意思是,一旦我检查Listview上我想做的任何添加员工的复选框: 从ListView中删除该员工并将其添加到其他列表视图中 在我从第一个Listview中删除员工之前,其他列表视图将被隐藏。 我如何将复选框绑定到员工的ID以及我如何在检查事件中提取员工对象或者其他任何其他人,我希望我能以清晰的方式解释我想要的内容!
答案 0 :(得分:0)
how I can extract the employee object in the check event or any other even
您可以从DataContext
对象的sender
属性中获取对象(只需确保首先从sender
转换为object
类型FrameworkElement
答案 1 :(得分:0)
正如@ thang2410199所说
您可以从
DataContext
对象的sender
属性中获取对象。
您不需要将Id属性绑定到某个地方进行删除,因为您可以从复选框的DataContext属性中获取员工实例。您可以使用以下代码删除已检查的员工:
private void StatusCB_Checked(object sender, RoutedEventArgs e)
{
var checkbox = sender as CheckBox;
if(checkbox!=null)
{
var employee =(Employee)checkbox.DataContext;
Employeeslist.Remove(employee);
}
}
完成演示以满足您的要求,您可以下载here。有关Listview的更多详细信息,请参考official sample。
答案 2 :(得分:0)
对于您的列表,您应该使用ObservableCollection。
实施INotifyPropertyChanged接口,以便在数据发生变化时收到通知。
创建一个名为ListCountToVisibilityConverter.cs的新类,实现IValueConverter接口。当你的数量
您可以通过在ListView中获取所选索引来删除项目,并且可以使用observable集合的add方法添加项目。
您可能希望实现MVVM模式。 MVVM Wikipedia