Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
如何从telerik WPF GridView控件中选择一行数据_Wpf_Wpf Controls_Telerik Grid - Fatal编程技术网

如何从telerik WPF GridView控件中选择一行数据

如何从telerik WPF GridView控件中选择一行数据,wpf,wpf-controls,telerik-grid,Wpf,Wpf Controls,Telerik Grid,我一直在使用WPF GridView控件DesktopUI而不是Silverlight,我需要能够选择特定的行,并且只返回该行的数据,以便在新控件(如列表框)中查看 此外,选择行中的数据后,需要禁用选择或向我的列表框添加其他数据的功能。这里的用例是,用户只能选择一行/记录进行导出或发布 在浏览一些telerik示例时,我看到了一些类似的示例,但没有任何示例完全支持此用例 有没有人对这些控件有过经验,并且知道这是否可以在WPF gridView中实现。我在他们的文档方面运气不太好,我曾尝试使用一些

我一直在使用WPF GridView控件DesktopUI而不是Silverlight,我需要能够选择特定的行,并且只返回该行的数据,以便在新控件(如列表框)中查看

此外,选择行中的数据后,需要禁用选择或向我的列表框添加其他数据的功能。这里的用例是,用户只能选择一行/记录进行导出或发布

在浏览一些telerik示例时,我看到了一些类似的示例,但没有任何示例完全支持此用例

有没有人对这些控件有过经验,并且知道这是否可以在WPF gridView中实现。我在他们的文档方面运气不太好,我曾尝试使用一些继承功能,如GridViewSelectColumn属性,该属性在列中生成复选框,但在选中复选框时调用命令的运气并不好。我应该使用按钮并将其添加为用户可以单击的独立列,而不是复选框,例如:

如果有人能提供一个代码示例,说明如何调用对一行数据的选择,以及如何在选择了一行数据后禁用对其他行的选择,我将不胜感激。对于禁用,我假设一旦选择了一个项目,CanUserSelect属性就需要设置为false,但是我还没有成功地使用GridViewSelectColumn调用任何东西

任何样品或参考点都将不胜感激


谢谢

我意识到这是一篇老文章。但我想在hopse中解决这个问题,它将帮助其他人。对于这个项目,我希望能够在网格视图中为spcecific行选择记录。Telerik GridView返回5列,但从WCF服务返回的集合实际上最多包含30列

我不会在这里讨论数据绑定,只讨论选择是如何设置的。此外,这个sampel不遵循MVVM这样的模式,因此为了快速解释,代码被放在后面的xaml代码中

首先,我需要注册CollectionChangedEvent处理程序。它所做的是每次我在网格视图中选择一行时,它都会根据所选行生成一个内存中所有项的集合

this.myGridView.Loaded += (o, e) =>
      {
          this.myGridView.SelectedItems.CollectionChanged += new NotifyCollectionChangedEventHandler(SelectedItem_CollectionChanged);
      };
对于SelectedItem\u集合更改事件

        void Item_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        if (e.Action == NotifyCollectionChangedAction.Add)
        {
            var index = e.NewItems[0] as myWCFService.Index;
            currentItem = index.Item;
        }
    }
基本上,这里发生的情况是当检测到记录选择时,所选行中的项目包括网格中未显示的所有项目。这是通过将index=设置为my webservice中的e.NewItems[0]来完成的,然后将其添加到内存中的新集合currentItem中

注意:currentItem在主类中声明为:

 public myWCFService.Item currentItem;

完成此操作后,我能够将currentItem集合中存储的选定行中的数据传递给其他集合/控件

,因此,在进一步使用控件时,我在窗口中添加了一个按钮,按下该按钮即可捕获该行的所有适当记录。为此,我使用了:this.radGridView1.SelectedItem。我现在的问题是,为了在新控件中显示这些记录,我是否需要将其推送到一个新集合,然后将该集合绑定到该控件,或者我是否可以直接将其推送到另一个控件上。我可能错了,但创建一个新的收藏似乎有些过分,但我在这方面还是新手。提前谢谢