いつもお世話になっております.
疑問I
WPFでPointをバインディングしたいのですが,
テキストボックスに中身を表示するだけでしたら①の方法も②の方法もどちらも思った通りの動作をします.
C#
1//hoge.pがPoint構造体の中身として,Xが5,Yが10とする 2//hogeはpをメンバにもつオブジェクト 3 4//① 「5」が表示 5<TextBox x:Name="Point_X" Text="{Binding hoge.p.X, Mode=TwoWay, UpdateSourceTrigger=Explicit}" /> 6 7//② 「5,10」と表示 8<TextBox x:Name="Point" Text="{Binding hoge.p, Mode=TwoWay, UpdateSourceTrigger=Explicit}"/> 9
しかし,UI→Point構造体という向きになると,①のやり方では値が反映されません.
Pointがクラスではなく構造体だからなのかな?と思いましたが原因が思いつきません
原因と改善策を教えていただけると助かります.
疑問II
バインディングの時,型をあまり意識しないですが中では何が行われているのでしょうか
TextBoxやLabel相手だと,Text={Binding}とするとどうやらToString()が自動的に呼ばれているような感じですし...
(ToString()をオーバーライドして試してみました)
また,疑問IのPointの例ですとテキストボックスに「10,20」と入力するとX=10,Y=20が反映されます.
Point構造体にGetFromText()みたいなメソッドがあるわけではないので,BindingしたときにどうやってXにカンマより左の値を,Yにカンマより右の値を入れているのかがわかりません.
②のテキストボックスに「10」とだけ入力してもX=10となることはありませんでした.
かなり根本的なところですが,よろしくお願いいたします,
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/13 11:27
2017/07/13 11:40