teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

質問内容の変更

2018/03/23 16:07

投稿

ElecDove
ElecDove

スコア254

title CHANGED
@@ -1,1 +1,1 @@
1
- DataGrid UpdateSourceTriggerをExplicitにした時のUpdateSourceの呼び出し方
1
+ DataGrid UpdateSourceTriggerをExplicitにした
body CHANGED
@@ -1,8 +1,11 @@
1
1
  いつもお世話になります。
2
2
 
3
+ 質問内容を変更しました。
3
4
 
4
- WPFのDataGridでコントロールの値の変更を任意のタイミングでバインディング元へ反映させたいと思い、ItemsSourceにUpdateSourceTrigger=Explicitを設定したのですが、のよにしてUpdateSourceを呼び出せばよいがわかりません。
5
+ DataGridでコントロールの値の変更を任意のタイミングでバインディング元へ反映させたい場合はどうすればよいでしょう
5
6
 
7
+
8
+ このようなソースではUpdateSourceを呼び出さなくても値が反映されてしまいました。
6
9
  ```XAML
7
10
  <DataGrid Margin="10,40,10,40" ItemsSource="{Binding UpdateSourceTrigger=Explicit}" AutoGenerateColumns="False" x:Name="DataGrid_A">
8
11
  <DataGrid.Columns>
@@ -11,22 +14,54 @@
11
14
  </DataGrid.Columns>
12
15
  </DataGrid>
13
16
  ```
14
- なDataGridがあり、別に設ボタンのイベントの中に
17
+ また、`DataGridTextColumn`うに`UpdateSourceTrigger=Explicit`を定し場合も同様でした。
15
18
 
19
+ ItemsSourceにセットされているのは、
20
+ `ObservableCollection<Hoge>`でして、
21
+ `Hoge`は
22
+ `public string aaa, public string bbb`の二つのプロパティを持っています。
23
+
24
+ 具体的にはこんな感じです。
16
25
  ```C#
26
+ Windowのコンストラクタの中で
27
+ {
28
+ InitializeComponent();
29
+ var Fuga = 「ObservableCollection<Hoge>」(イメージ)
30
+ DataGrid_A.ItemsSource = Fuga;
31
+ }
32
+ ```
33
+
34
+ よろしくお願いいたします。
35
+
36
+
37
+ ---
38
+ ※以下は編集前の質問内容です
39
+ ~~
40
+ WPFのDataGridで、コントロールの値の変更を任意のタイミングでバインディング元へ反映させたいと思い、ItemsSourceにUpdateSourceTrigger=Explicitを設定したのですが、どのようにしてUpdateSourceを呼び出せばよいのかがわかりません。
41
+ ~~
42
+ ```XAML
43
+ <DataGrid Margin="10,40,10,40" ItemsSource="{Binding UpdateSourceTrigger=Explicit}" AutoGenerateColumns="False" x:Name="DataGrid_A">
44
+ <DataGrid.Columns>
45
+ <DataGridTextColumn Header="AAA" Binding="{Binding aaa, Mode=TwoWay}" Width="150"/>
46
+ <DataGridTextColumn Header="BBB" Binding="{Binding bbb, Mode=TwoWay}" Width="100"/>
47
+ </DataGrid.Columns>
48
+ </DataGrid>
49
+ ```
50
+ ~~このようなDataGridがあり、別に設けたボタンのイベントの中に~~
51
+
52
+ ```C#
17
53
  BindingExpression be = DataGrid_A.GetBindingExpression(DataGrid.ItemsSourceProperty);
18
54
  be.UpdateSource();
19
55
  ```
20
56
 
21
- という風に見様見真似で書いてみたのですが、
22
- 実際に実行してみるとbeがnullになります。
57
+ ~~という風に見様見真似で書いてみたのですが、実際に実行してみるとbeがnullになります。~~
23
58
 
24
- ItemsSourceにセットされているのは、
59
+ ~~ItemsSourceにセットされているのは、~~
25
- `ObservableCollection<Hoge>`でして、
60
+ ~~`ObservableCollection<Hoge>`でして、~~
26
- `Hoge`は
61
+ ~~`Hoge`は~~
27
- `public string aaa, public string bbb`の二つのプロパティを持っています。
62
+ ~~`public string aaa, public string bbb`の二つのプロパティを持っています。~~
28
63
 
29
- 具体的にはこんな感じです。
64
+ ~~具体的にはこんな感じです。~~
30
65
  ```C#
31
66
  Windowのコンストラクタの中で
32
67
  {
@@ -36,4 +71,4 @@
36
71
  }
37
72
  ```
38
73
 
39
- よろしくお願いします。
74
+ ~~よろしくお願いします。~~