2016-06-17 13 views
0

プロパティのうちの1つがboolであるObservableCollectionがあります。 DataGridのitemsSourceをObservableCollectionとして設定すると、boolプロパティのチェックボックス列を含む列が自動的に生成されます。コードでWPFデータグリッドのチェックボックス列にチェックを入れてください

私はコードでチェックボックスをチェックする方法を知りたいと思います。

ObservableCollectionのレコードプロパティ値をtrueに更新しようとしましたが、UIの更新には役立ちません。

助けてください。

は、[EDIT:答えで提案されているようにコードの下に動作]

public class InvoiceDoc : INotifyPropertyChanged 
    { 
     private bool _Selected; 
     [DisplayName("Selected")] 
     public bool Selected 
     { 
      get { return _Selected; } 
      set { _Selected = value; this.OnPropertyChanged(); } 
     } 


     [DisplayName("Date")]     
     public DateTime DocDate { get; set; } 
     public event PropertyChangedEventHandler PropertyChanged; 

     private void OnPropertyChanged([CallerMemberName] string propertyName = null) 
     { 
      if (PropertyChanged !=null) 
       this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
     } 

} 

を次のように私のクラスは

を次のようにのItemsSourceを設定

<DataGrid x:Name="dgInvoices" Margin="32,110,32,59" AutoGeneratingColumn="dgInvoices_AutoGeneratingColumn"/> 

は次のようにデータグリッドがあります

docs = new ObservableCollection<InvoiceDoc>(); ; 

dgInvoices.ItemsSource = docs; 

グリッドが自動的にチェックボックスをオンにすることを期待していますコレクションの値を設定します。

答えて

0

ObservableCollectionへのバインドは、Itemが追加または削除された場合にのみ有効です。あなたのコレクション内の

あなたの要素は、UIが変更

を認識するようにINotifyPropertyChangedのを実装する必要が

EDIT:

public class MyClass { 

    public string Name { get; set; } 

    public bool IsActive { get; set; } 

} 

このクラスはあります

は、あなたのコレクションで、次のオブジェクトを考えてみましょう今度は次のように変更されます:

エラーがある場合は、CallerMemberNameAttributeを削除し、this.OnPropertyChanged();を呼び出します。 Propertynameと一緒に。

+0

ああ、そうです。追加と削除が機能しています。それのサンプルがありますか? – Hybridzz

+0

しかし、このイベントにハンドラを追加する必要はありますか? – Hybridzz

+0

いいえ、あなたはいけません。これはどのようにwpf +バインディングが動作するかの魔法です;) – lokusking

関連する問題