wpf中listbox和datagrid之间的双向拖放
我正在寻找一些帮助,以实现WPF中ListBox和DataGrid列之间的双向拖放功能。我已经在网上搜索并设法抓取了拖放示例,但它们不能满足我的需要,而且大多数都缺少一些代码。我的datagrid包含两列,分别是EmployeeName和DepartmentName。这些值来自最初仅使用EmployeeName加载的集合。这意味着departmentname列为空。然后,用户可以使用拖放选择适当的部门。部门名称加载到列表框中。需要从列表框中选择Departmentname,将其拖放到datagrid列中。使用该Employeename将映射到部门名称。一旦删除,该部门名称应该从列表框中删除,以便它不能映射到其他员工。可以通过将部门名称从datagrid拖回列表框并重新选择另一个部门名称进行拖放来更改映射 我的Xaml是这样的。(代码中实际上不是员工/部门,但我已经用它来解释我在寻找什么)wpf中listbox和datagrid之间的双向拖放,wpf,datagrid,listbox,two-way,Wpf,Datagrid,Listbox,Two Way,我正在寻找一些帮助,以实现WPF中ListBox和DataGrid列之间的双向拖放功能。我已经在网上搜索并设法抓取了拖放示例,但它们不能满足我的需要,而且大多数都缺少一些代码。我的datagrid包含两列,分别是EmployeeName和DepartmentName。这些值来自最初仅使用EmployeeName加载的集合。这意味着departmentname列为空。然后,用户可以使用拖放选择适当的部门。部门名称加载到列表框中。需要从列表框中选择Departmentname,将其拖放到datagr
任何链接,样本代码,建议将不胜感激。
当做
Minal我想试试这样的东西: 您必须稍微扩展接口:
接口IDragable
{
类型数据类型{get;}
//如果source=grid,则从employ中删除该部门;如果source=listbox,则从列表中删除该部门。
无效删除(对象一);
//如果source=grid和source=listbox,则返回部门。
对象GetDataToDrag();
}
接口IDropable
{
类型数据类型{get;}
//如果target=grid->set department on current employee,如果target=listbox->add item to listbox。
作废删除(对象数据)
}
因此,您需要2个ViewModels->一个用于网格,一个用于列表框,所有这些模型都实现IDragable和IDragable
这些行为与我在上面发布的codeproject文章中的行为非常相似
如果您需要他们的进一步帮助,只需询问;) 非常感谢,迈克。这确实很有帮助。我今天会试一试,如果我需要任何进一步的帮助,我会告诉你。这方面有什么成功吗?是的,稍微调整一下,它对我很有效。谢谢你的帮助。
<DataGrid x:Name="DatagridEmployeeMapping" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Margin="5,5,5,5"
ItemsSource="{Binding ElementName=MWindow, Path=Settings.EmployeeMapping}" GridLinesVisibility="Vertical" AutoGenerateColumns="False" CanUserAddRows="False" IsReadOnly="False" SelectionMode="Single" >
<DataGrid.Columns>
<DataGridTextColumn Header="Employee Name" Binding="{Binding Path=eName}" Width="1*" IsReadOnly="True" />
<DataGridTextColumn Header="Department Name" Binding="{Binding Path=dName}" Width="1*" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
<ListBox x:Name="ListboxDepartmentData" Grid.Column="2" Grid.Row="1" Margin="5,5,5,5"
ItemsSource="{Binding ElementName=MWindow, Path=DepartmentDetails}" DisplayMemberPath="Name" ScrollViewer.VerticalScrollBarVisibility="Visible">
</ListBox>