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

回答編集履歴

4

initialを追加

2016/07/14 03:58

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -51,15 +51,18 @@
51
51
  ```C#
52
52
  class MainVM : ViewModel
53
53
  {
54
- public HogeVM TextBoxX { get; set; } = new HogeVM();
54
+ public HogeVM TextBoxX { get; set; } = new HogeVM(initial: 2);
55
55
  }
56
56
 
57
57
  class HogeVM : ViewModel
58
58
  {
59
59
 
60
60
 
61
- private double x = 2;
61
+ private double x ;
62
-
62
+ public HogeVM(double initial)
63
+ {
64
+ x = initial;
65
+ }
63
66
  public string Text
64
67
  {
65
68
  get

3

例の追加

2016/07/14 03:58

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -41,4 +41,69 @@
41
41
  <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding XTextBox.Text}" ...
42
42
  ```
43
43
 
44
- とバインドしてはどうでしょうか。
44
+ とバインドしてはどうでしょうか。
45
+
46
+
47
+ ---
48
+
49
+ こんな感じです。
50
+
51
+ ```C#
52
+ class MainVM : ViewModel
53
+ {
54
+ public HogeVM TextBoxX { get; set; } = new HogeVM();
55
+ }
56
+
57
+ class HogeVM : ViewModel
58
+ {
59
+
60
+
61
+ private double x = 2;
62
+
63
+ public string Text
64
+ {
65
+ get
66
+ {
67
+ return this.x.ToString();
68
+ }
69
+
70
+ set
71
+ {
72
+ Console.WriteLine("set");
73
+ if (this.Text == value)
74
+ {
75
+ return;
76
+ }
77
+
78
+ double v;
79
+
80
+ try
81
+ {
82
+ v = double.Parse(value);
83
+ }
84
+ catch
85
+ {
86
+ this.RaisePropertyChanged(() => this.Text);
87
+
88
+ return;
89
+ }
90
+
91
+ this.x = v;
92
+
93
+ this.RaisePropertyChanged(() => this.Text);
94
+ }
95
+ }
96
+ }
97
+ ```
98
+
99
+ ```xml
100
+ <Window ...
101
+ >
102
+ <Window.DataContext>
103
+ <local:MainVM/>
104
+ </Window.DataContext>
105
+ <StackPanel>
106
+ <TextBox Text = "{Binding TextBoxX.Text}"/>
107
+ </StackPanel>
108
+ </Window>
109
+ ```

2

修正

2016/07/14 03:38

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -1,10 +1,13 @@
1
1
  ```C#
2
2
  public class HogeVM : ... //いい名前が思いつかなかった
3
+ // 何かしら継承する
3
4
  {
4
5
  /*
5
6
  何かあるとは思うが省略
6
7
  */
7
8
  private double x;
9
+ public HogeVM(double initial){/*省略*/}
10
+
8
11
  public string Text
9
12
  {
10
13
  get
@@ -28,8 +31,8 @@
28
31
 
29
32
 
30
33
  ```C#
31
- public HogeVM XTextBox {get;} = new HogeVM(initial = 0);
34
+ public HogeVM XTextBox {get;} = new HogeVM(initial : 0);
32
- public HogeVM YTextBox {get;} = new HogeVM(initial = 0);
35
+ public HogeVM YTextBox {get;} = new HogeVM(initial : 0);
33
36
  ```
34
37
 
35
38
  のように元のVMにプロパティで持たせ、

1

コメント受けて修正

2016/07/14 02:14

投稿

ozwk
ozwk

スコア13553

answer CHANGED
File without changes