如何将ID属性绑定到xaml中的复选框WUP

时间:2016-03-26 19:15:39

标签: c# xaml windows-10-universal

首先感谢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以及我如何在检查事件中提取员工对象或者其他任何其他人,我希望我能以清晰的方式解释我想要的内容!

3 个答案:

答案 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)

  1. 对于您的列表,您应该使用ObservableCollection。

  2. 实施INotifyPropertyChanged接口,以便在数据发生变化时收到通知。

  3. 创建一个名为ListCountToVisibilityConverter.cs的新类,实现IValueConverter接口。当你的数量 0返回Visibility.Visible else返回 Visibility.Collapsed。

  4. 您可以通过在ListView中获取所选索引来删除项目,并且可以使用observable集合的add方法添加项目。

  5. 您可能希望实现MVVM模式。 MVVM Wikipedia