0

最初の列にチェックボックスが含まれる1つのデータグリッドがあります。私が実装したいのは、最初の行のチェックボックスをチェックしてから、シフトボタンを押したまま5行目のチェックボックスをチェックすると、アプリケーションは選択した行のすべてのチェックボックスをチェックする必要があります(つまり、最初の行から5番目の行)。

私はMVVMパターンを使用しています。チェックボックス列の上部にcheckallチェックボックスがあり、コマンドがそれにバインドされています。CheckAll チェックボックスが正しく機能します。個々のチェックボックスをクリックすると、選択したチェックボックスをチェック/チェック解除するビューモデルからコマンドも実行されます。ViewModel のプロパティはチェックボックスにバインドされています。

私が今やりたいことは、メール (yahoo、gmail など) で見られるものと非常によく似ています。チェックボックスは、シフトキーを使用したキーボードからの行選択に基づいてチェック/チェック解除する必要があります。問題を説明するために必要な情報が不足している場合はお知らせください。

4

1 に答える 1

0

はい、可能です。

使用した Datagrid には、SELECETIONMODE というプロパティがあります。

SelectionMode = EXTENDEDこれをに設定します。

次へ->

この種のコードを使用して、すべてのチェックボックスを true にチェックします。

ロードするデータのクラスを作成することをお勧めします。きれいで簡単になります。RIA サービスを使用してデータをロードし、それをデータグリッドにバインドする場合は、既にソートされています..:)

列番号を使用する代わりに、これを強くお勧めします。

private void refreshDatagrid()
{

ObservableCollection<Cars> c = --Load all your cars----;
this.mydatagrid.ItemsSource = c;
}

---To Check all the boxes
private void checkAllBoxes_Click(object sender, RoutedEventArgs e)
        {
            if (this.mydatagrid.SelectedItems != null)
            {
                foreach (Cars c in this.mydatagrid.SelectedItems)
                {
                    if (c.isSelected != true)
                    {
                        ula.Approved = true;
                    }
                }
            }
        }

--Example Object Class
class Cars {

   public Cars(){}

   public Nullable<bool> isSelected {get;set;}

   public string carName {get;set;}

   public string LicenseNumber {get;set;}

   public string year {get;set;}

   public string model {get;set;}    

}

もちろん最後にフロントエンドにボタンを作成しますClick="checkAllBoxes_Click"

コンセプトが明確であることを願っています。

乾杯

于 2012-09-07T21:32:44.440 に答える