1

私はWPFGridViewコントロール(SilverlightではなくDesktopUI)で遊んでいますが、特定の行を選択し、リストボックスなどの新しいコントロール内で表示するためにその行のデータのみを返す必要があります。

さらに、行のデータを選択したら、リストボックスにデータを選択または追加する機能を無効にする必要があります。ここでの使用例は、ユーザーがエクスポートまたは公開する行/レコードを1つだけ選択できることです。

いくつかのtelerikサンプルを調べたところ、いくつかの同様の例を見ましたが、このユースケースを完全にサポートするものはありませんでした。

誰かがこれらのコントロールを使用した経験があり、これがWPFgridView内で実行できるかどうかを知っていますか。私は彼らのドキュメントにあまり恵まれておらず、GridViewSelectColumnプロパティ(列にチェックボックスを生成しますが、チェックボックスが選択/チェックされているときにコマンドを呼び出すことができません)などの継承機能のいくつかを使用しようとしました)。チェックボックスの代わりに、ボタンを使用して、ユーザーがクリックできるスタンドアロンの列として追加する必要があります。

誰かがデータの1つの行の選択を呼び出す方法と、単一の行が選択された後に追加の行の選択を無効にする方法のコードサンプルを提供できれば幸いです。無効にするために、アイテムが選択されたらCanUserSelectプロパティをfalseに設定する必要があると思いますが、GridViewSelectColumnを使用して何かを正常に呼び出すことはまだできていません。

任意のサンプルまたは参照ポイントをいただければ幸いです。

ありがとうございました

4

1 に答える 1

0

これは古い投稿だと思います。しかし、私はそれが他の人を助けることを期待してこれに対処したかった。このプロジェクトでは、グリッドビュー内の特定の行のレコードを選択できるようにしたかったのです。Telerik GridViewは5列を返しましたが、コレクション(WCFサービスから返された)には実際には最大30列が含まれていました。

ここでは、選択がどのように設定されたかについてのみ、データのバインドについて説明するつもりはありません。また、このサンプルはパターン(MVVMなど)に準拠していないため、すばやく説明するために、コードはxamlコードビハインドに配置されました。

まず、CollectionChangedEventハンドラーを登録する必要がありました。これは、グリッドビューで行を選択するたびに、選択した行に基づいてすべてのアイテムのメモリ内コレクションを生成しました。

this.myGridView.Loaded += (o, e) =>
      {
          this.myGridView.SelectedItems.CollectionChanged += new NotifyCollectionChangedEventHandler(SelectedItem_CollectionChanged);
      };

そして、SelectedItem_Collection変更イベントの場合

        void Item_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        if (e.Action == NotifyCollectionChangedAction.Add)
        {
            var index = e.NewItems[0] as myWCFService.Index;
            currentItem = index.Item;
        }
    }

基本的に、ここで行われるのは、レコードの選択が選択された行からのアイテム(グリッドに表示されていないすべてのアイテムを含む)が検出された場合です。これは、インデックス=をWebサービスのe.NewItems [0]に設定し、次にnewに追加することによって行われます。コレクション(currentItem)がメモリ内にあります。

注:currentItemは、メインクラスで次のように宣言されています。

 public myWCFService.Item currentItem;

これが完了すると、選択した行(currentItemコレクションに格納されている)から他のコレクション/コントロールにデータを渡すことができました。

于 2011-02-21T16:45:08.720 に答える