私はWPFが初めてで、数日間質問に対する答えが見つかりません。便利なリンクを教えてください...
データグリッドにバインドされたデータテーブルがあります。
public class Customers:INotifyPropertyChanged
private DataTable _contacts;
public DataTable Contacts
{
get { return _contacts; }
set
{
_contacts = value;
OnPropertyChanged("Contacts");
}
}
public Customers()
{
RaisePropertyChanged("Contacts");
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public void RaisePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
if(string.Compare(propertyName,"Contacts")==0)
{
var CustomerContacts = new CustomerContactsTable();
if (Id != null)
CustomerContacts.GetTableByCustomerId(Id);
Contacts = CustomerContacts;
//..here is logic for other properties..
}
}
そして、ここにxamlがあります:
<DataGrid ItemsSource="{Binding Path=Contacts}" TargetUpdated="dgContacts_TargetUpdated">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name,NotifyOnTargetUpdated=True}" ClipboardContentBinding="{x:Null}" />
<DataGridTextColumn Binding="{Binding TelNo,NotifyOnTargetUpdated=True}" ClipboardContentBinding="{x:Null}" />
</DataGrid.Columns>
</DataGrid>
データの更新をデータベースに実装する方法がよくわかりません。指定されたデータ行の 2 つのリストを取得したい: 更新された行 (内部の新しい行内) を含むリストと、削除された行を含むリスト。セルではなく、行全体で作業したい。また、DataTableAdapter は使用しません。現在、datagrid を変更しても、sourcecollection の更新は提供されません。どのイベントを使用するとよいでしょうか (OnTargetUpdated、RowEditEnding など)? そんなに叩かないでください。前もって感謝します!