Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf MVVM,两个同步的网格数据_Wpf_Mvvm_Binding_Gridcontrol - Fatal编程技术网

Wpf MVVM,两个同步的网格数据

Wpf MVVM,两个同步的网格数据,wpf,mvvm,binding,gridcontrol,Wpf,Mvvm,Binding,Gridcontrol,我想做一个控件,用于从两个列表(选中和未选中)中添加和删除项目,如下所示: 但是我找不到一个好方法来做这件事;如何使用GridData(或类似控件,如Devexpress的GridControl)绑定两个列表并对其进行修改 问题: 我无法将ObservableCollection与此控件一起使用 我无法绑定SelectedItems 如果您对某些工作有任何建议或样本,这将是一个很大的帮助您可以使用两个可观察的集合吗?一个用于选中,一个用于未选中。这似乎是实现此类功能的最简单方法 publi

我想做一个控件,用于从两个列表(选中和未选中)中添加和删除项目,如下所示:

但是我找不到一个好方法来做这件事;如何使用GridData(或类似控件,如Devexpress的GridControl)绑定两个列表并对其进行修改

问题:

  • 我无法将ObservableCollection与此控件一起使用
  • 我无法绑定SelectedItems

如果您对某些工作有任何建议或样本,这将是一个很大的帮助

您可以使用两个可观察的集合吗?一个用于选中,一个用于未选中。这似乎是实现此类功能的最简单方法

public class MainViewModel 
{
    private readonly ObservableCollection<Item> _selectedItems = new ObservableCollection();
    private readonly ObservableCollection<Item> _unselectedItems = new ObservableCollection();

    public IEnumerable<Item> SelectedItems { get { return _selectedItems; } }
    public IEnumerable<Item> UnselectedItems { get { return _unselectedItems; } }

    private void UnselectItems()
    {
        MoveFromOneCollectionToAnother(_unselectedItems, _selectedItems, ...);
    }

    private void SelectItems()
    {
        MoveFromOneCollectionToAnother(_selectedItems, _unselectedItems, ...);
    }

    private void MoveFromOneCollectionToAnother(ICollection<Item> source, ICollection<Item> destination, IEnumerable<Item> itemsToMove)
    {
        foreach (var item in itemsToMove)
        {
            source.Remove(item);
            destination.Add(item);
        }
    }
}
public类主视图模型
{
私有只读ObservableCollection _selectedItems=新ObservableCollection();
私有只读ObservableCollection _unselectedItems=新ObservableCollection();
public IEnumerable SelectedItems{get{return\u SelectedItems;}}
public IEnumerable UnselectedItems{get{return\u UnselectedItems;}}
私有无效未选择项()
{
从一个集合移动到另一个集合(\u unselectedItems,\u selectedItems,…);
}
私有void SelectItems()
{
从一个集合移动到另一个集合(\u selectedItems,\u unselectedItems,…);
}
私有void从一个集合移动到另一个集合(ICollection source、ICollection destination、IEnumerable items to move)
{
foreach(itemsToMove中的var项)
{
来源。删除(项目);
目的地。添加(项目);
}
}
}

感谢您的回复。这是事实,我尝试了一些类似的工作,但我的问题是,我无法将此列表与GridControl的SelectedItems绑定。我有两个网格,我想选择一个或多个元素,当我单击网格时,网格会被更新。@rad,等等,
GridControl。SelectedItems
的属性听起来不正确。应该有smth,如
ItemsSource
。@Snowbear我用“ItemsSource”填充“GridControl”,但我只想移动所选项目,我的问题是该属性不存在。。。我不想移动网格的所有源,只想移动所选内容。@rad,这似乎是特定网格控制的问题。@Snowbear我认为WPF
DataGrid
control也是如此