いつもお世話になります。
質問内容を変更しました。
DataGridでコントロールの値の変更を任意のタイミングでバインディング元へ反映させたい場合はどうすればよいでしょうか
このようなソースではUpdateSourceを呼び出さなくても値が反映されてしまいました。
XAML
1<DataGrid Margin="10,40,10,40" ItemsSource="{Binding UpdateSourceTrigger=Explicit}" AutoGenerateColumns="False" x:Name="DataGrid_A"> 2 <DataGrid.Columns> 3 <DataGridTextColumn Header="AAA" Binding="{Binding aaa, Mode=TwoWay}" Width="150"/> 4 <DataGridTextColumn Header="BBB" Binding="{Binding bbb, Mode=TwoWay}" Width="100"/> 5 </DataGrid.Columns> 6</DataGrid>
また、DataGridTextColumn
のほうにUpdateSourceTrigger=Explicit
を設定した場合も同様でした。
ItemsSourceにセットされているのは、
ObservableCollection<Hoge>
でして、
Hoge
は
public string aaa, public string bbb
の二つのプロパティを持っています。
具体的にはこんな感じです。
C#
1Windowのコンストラクタの中で 2{ 3InitializeComponent(); 4var Fuga = 「ObservableCollection<Hoge>」(イメージ) 5DataGrid_A.ItemsSource = Fuga; 6}
よろしくお願いいたします。
※以下は編集前の質問内容です
~~
WPFのDataGridで、コントロールの値の変更を任意のタイミングでバインディング元へ反映させたいと思い、ItemsSourceにUpdateSourceTrigger=Explicitを設定したのですが、どのようにしてUpdateSourceを呼び出せばよいのかがわかりません。
~~
XAML
1<DataGrid Margin="10,40,10,40" ItemsSource="{Binding UpdateSourceTrigger=Explicit}" AutoGenerateColumns="False" x:Name="DataGrid_A"> 2 <DataGrid.Columns> 3 <DataGridTextColumn Header="AAA" Binding="{Binding aaa, Mode=TwoWay}" Width="150"/> 4 <DataGridTextColumn Header="BBB" Binding="{Binding bbb, Mode=TwoWay}" Width="100"/> 5 </DataGrid.Columns> 6</DataGrid>
このようなDataGridがあり、別に設けたボタンのイベントの中に
C#
1BindingExpression be = DataGrid_A.GetBindingExpression(DataGrid.ItemsSourceProperty); 2be.UpdateSource();
という風に見様見真似で書いてみたのですが、実際に実行してみるとbeがnullになります。
ItemsSourceにセットされているのは、
ObservableCollection<Hoge>
でして、
Hoge
は
public string aaa, public string bbb
の二つのプロパティを持っています。
具体的にはこんな感じです。
C#
1Windowのコンストラクタの中で 2{ 3InitializeComponent(); 4var Fuga = 「ObservableCollection<Hoge>」(イメージ) 5DataGrid_A.ItemsSource = Fuga; 6}
よろしくお願いします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/28 04:19