手動更新で観察コレクションバインドさデータグリッドに対処する方法以来、今私はデータグリッドに持って
[Serializable]
public class CfgPartPrograms
{
public CfgPartPrograms() { }
public string Group{ get; set;}
public string Description{ get; set;}
public string Filename{ get; set;}<------set with openfiledialog
public string Notes{ get; set;}
}
で監視可能なコレクション
ObservableCollection<CfgPartPrograms> obcCfgPartPrograms = new ObservableCollection<CfgPartPrograms>();
にバインドされ
<DataGrid Name="dtgFeatures" Height="100" Margin="10" ColumnWidth="*" CanUserAddRows="True" MouseLeftButtonUp="DtgFeatures_MouseLeftButtonUp"/>
openfileDialogでファイル名を挿入できるようにしたいこのコードを追加しました:
private void DtgFeatures_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
int column = (sender as DataGrid).CurrentCell.Column.DisplayIndex;
if (column == 2)
{
OpenFileDialog ofdPP = new OpenFileDialog();
if (ofdPP.ShowDialog() == true)
{
if (obcCfgPartPrograms.Count == 0)
obcCfgPartPrograms.Add(new CfgPartPrograms() { Filename = ofdPP.FileName });
else
obcCfgPartPrograms[selectedIndex].Filename = ofdPP.FileName;
dtgFeatures.ItemsSource = null;
dtgFeatures.ItemsSource = obcCfgPartPrograms;
}
}
ファイル名を設定すると、observableコレクションがまだ更新されていないという問題があります。 私は画像とその説明します:
だから私はAAAAとBBBを追加した今、私は上記のコードでファイル名を強制したいが、私はバインドアクションが上まだ行われていないことを行うときaaaaとbbbbが存在しないように観察可能なコレクション。要するに
バインディングを更新するためにバインドさデータグリッドを伝えるためにどのように?事前 で
おかげパトリック
あなたのアイデアは正しいと思いますが、それは解決策ですが動作しません。最初は、ファイル名が変更されたときではなく、他のメンバーが行うときに、観測可能なコレクションを更新する必要があると私は思っています。だから私は通知されたプロパティをグループに変更しました。ただし、データグリッドにデータを入力してEnterキーを押した後も、GroupプロパティのSetコードはヒットしません。 – Patrick
データグリッドの手作業による変更は、観察可能なコレクションに反映されません – Patrick
ソースプロパティは、デフォルトで行から離れたときに設定されます。 Cellによって変更をコミットしない限り、明示的にCommitEditメソッドを呼び出す必要はありません。http://blog.scottlogic.com/2009/01/21/wpf-datagrid-committing-changes-cell-by-cell .html。しかしこれは元のものよりも別の問題です。問題が解決した場合は、その旨を覚えておいてください。 – mm8