[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 03/05 11:06 / Filesize : 95 KB / Number-of Response : 463
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part15



1 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 12:52:38.89 ]
ユーザーインターフェースシステム、Windows Presentation Frameworkについて微に入り語るスレ。

Visual Studio 2012 & 2010
www.microsoft.com/visualstudio/jpn/downloads
Microsoft .NET Framework 4 (Web インストーラー)
www.microsoft.com/downloads/details.aspx?familyid=9CFB2D51-5FF4-4491-B0E5-B386F32C0992&displaylang=ja
Microsoft .NET Framework 4 (スタンドアロンインストーラー)
www.microsoft.com/downloads/details.aspx?familyid=0A391ABD-25C1-4FC0-919F-B21F31AB88B7&displaylang=ja
Microsoft .NET Framework 4.5
msdn.microsoft.com/ja-jp/library/vstudio/5a4x27ek.aspx

前スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part14
toro.2ch.net/test/read.cgi/tech/1351322296/

関連スレ
Microsoft Silverlight その9
toro.2ch.net/test/read.cgi/tech/1321150267/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
ideone.com/

2 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 12:53:14.57 ]
Part13 toro.2ch.net/test/read.cgi/tech/1334300003/
Part12 toro.2ch.net/test/read.cgi/tech/1324366825/
Part11 toro.2ch.net/test/read.cgi/tech/1320589318/
Part10 hibari.2ch.net/test/read.cgi/tech/1315648327/
Part9 hibari.2ch.net/test/read.cgi/tech/1301122694/
Part8 hibari.2ch.net/test/read.cgi/tech/1291554513/
Part7 hibari.2ch.net/test/read.cgi/tech/1282479113/
Part6 hibari.2ch.net/test/read.cgi/tech/1274423236/
Part5 pc12.2ch.net/test/read.cgi/tech/1261879110/
Part4 pc12.2ch.net/test/read.cgi/tech/1245384489/
Part3 pc12.2ch.net/test/read.cgi/tech/1231506876/
Part2 pc11.2ch.net/test/read.cgi/tech/1211453941/
Part1 pc11.2ch.net/test/read.cgi/tech/1162950198/

3 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 13:20:33.17 ]


4 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 17:32:33.67 ]
WPFでソケット通信を実行するときは、その手続きはどこに書くべきなんですかね?
MVVMだとDB接続はモデルに書くらしいんですが

今回はソケット通信でデータ受信するだけでなく、短い文言も送信しますし
相手方の応答に応じて、分岐とかあったりします

5 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 17:35:38.79 ]
View:なるべく書かない。画面遷移くらい。
ViewModel:画面で完結する処理を書く
Model:他はすべてここ

6 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 17:36:05.49 ]
VMに書け
以上

7 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 17:36:59.73 ]
文言もモデル化できるとしてModelが妥当

8 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 17:38:53.02 ]
メッセージパッシングとかまさにそんなんだろ

9 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 17:44:27.39 ]
>>5
>>7
そうなんですか・・・
MVVMのモデルってでかいんですね

10 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 17:46:01.69 ]
モデルをDBのレコードとしか考えない
理由が無い



11 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 17:48:01.60 ]
画面と処理を分離させるのがポイント
画面がいくら変わっても表示させたいデータが変わらない限りはModelは何も変えなくて良いように設計する
だから、データの見せ方に関わる動きはViewModelに書く

12 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 17:54:21.04 ]
なるほど

DBからDataTableを持ってくる処理はModelに書くとして、Viewではそれを行列反対にして表示する場合
その行列を組み替える処理はViewModelなんですかね?

13 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 17:59:30.74 ]
そんな感じ

14 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 20:25:31.23 ]
ありがとうございました。

15 名前:13 mailto:sage [2013/02/03(日) 20:39:31.97 ]
言っとくけど、俺はWPFでアプリを作ったことがない

16 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 20:44:18.42 ]
VS2012でx64のWPF開発してるんですが、未だにデザイナはx64に対応しないの?

17 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 20:49:38.62 ]
語弊がありそうな書き込み発見

18 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 22:13:56.73 ]
>>17
どれ?
WPFのプロの方、教えてください。

19 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 02:02:26.77 ]
WPFは終了しました

20 名前:デフォルトの名無しさん [2013/02/04(月) 11:45:00.27 ]
Borderの中にコントロールを入れて、そのコントロールが水平・垂直に真ん中に配置されるプロパティーってないんですか?

なんかAndroidとかと比べて、コントロールに親子関係がないような



21 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 12:05:26.58 ]
子要素のHorizontalAlignment/VerticalAlignment

22 名前:デフォルトの名無しさん [2013/02/04(月) 12:16:18.22 ]
3.5までしか触ってないんだけど、セパレータって縦置きできるようになった?

23 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 12:20:49.81 ]
確認してないけどできない

24 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 12:25:53.09 ]
>>21
それをやっても、ボーダーに対して真ん中にならず、恐らくGridに対して真ん中になるです

25 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 12:30:59.17 ]
なんだか状況がおかしい気がする

26 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 12:32:53.26 ]
ほっといても真ん中だし
gridに対して真ん中って表現もおかしい
だったらグリッドのマス目のコラムの幅変えてみて場所が変わるか?

27 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 12:35:56.28 ]
Borderと子コントロールの話だったのにどっからGridが出てきたのか

28 名前:24 mailto:sage [2013/02/04(月) 12:36:00.01 ]
すいません
勘違いしてました

全てのコントロールがGridに対して子になっていただけで、Border →StackPanel → 子コントロールと入れ子にしてから、
各子コントロールのプロパティーをいじらないといけなかったようです

ありがとうございました

29 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 12:37:58.18 ]
ずこ

30 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 13:49:17.27 ]
Settings.settingsってそのままModelとして使ってもいいんでしょうか
それともラップするクラスを作るべきでしょうか



31 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 16:59:46.78 ]
別にそのままでいいよ

32 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 20:25:29.36 ]
多角形のボタンってどうやって作るの?

33 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 21:02:17.36 ]
wpf 丸いボタンで検索して丸を多角形に変えればいい

34 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 22:28:16.99 ]
マルチスレッドって、Backgroudworkerあればあとは使わない感じ?

35 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 22:36:44.81 ]
NotificationWindowってどうやって使えばいいかわかりますか?
AndroidのToastみたいなポップアップを出してみたいです

36 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 22:47:18.19 ]
あんまBackgroundWorkerこそ使わなくなったな
専らTaskとDispatcher.Invokeで済ます

37 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 01:43:34.89 ]
WPFでBackgroudworker使ったことないな

38 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 03:56:11.87 ]
非同期とかRxしかねーだろ

39 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 09:48:21.82 ]
WPFというより4.0ではいらない

40 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 11:37:18.10 ]
Rxはオワコン

非同期はasync,awaitの方が使いやすいし、
リアクティブプログラミング支援ライブラリとしても使いにくい。



41 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 11:51:28.25 ]
他におすすめのライブラリあるのか?

42 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 12:15:15.59 ]
必ずライブラリを使わないといけない強迫観念にでも落ちいってんのか?

43 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 12:25:31.51 ]
Rx自前とかアホか

44 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 12:28:38.60 ]
今度はRx教ですか
MVVM教といいしなねーかな
殺したい

45 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 12:34:58.10 ]
LINQ教もあるの?

46 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 12:36:47.30 ]
たぶんあるね

47 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 12:51:24.27 ]
C#はC/C++の代用としてがっつりデスクトッププログラム書きたい奴と
JavaScriptとかPHPとかの代用としてWEBアプリとか書きたい奴がいて
お互いに相容れなそう
設計思想とか全然違っちゃうしな

48 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 12:58:26.23 ]
おいおい、MVVMは定義が曖昧すぎて理解不能で利便性の欠片も感じられないが、Rxは最高だろおい

49 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 13:44:35.72 ]
.NET Framework内にReactiveって単語が含まれたらRx戦争終戦で
ViewModelって単語が含まれたらMVVM戦争終戦にしよう

50 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 13:53:45.42 ]
LINQは別に宗教じゃなくてすでに言語の一部だろ
WPF用にプロパティ作るのもメソッド作るにも普通に使う
LINQなら一行でサクっと済むのが、
使わないと同じことするのに行数と文字数が何倍にもなるし。



51 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 14:41:42.02 ]
EF教ならまだ分かるがLINQ持ち出すあたりにわかすぎw

52 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 14:55:29.80 ]
>>40
リアクティブとして他に良いのが有るならぜひ教えてくれ。
RxとMVVMの組み合わせはすこぶる良い感じです(´・ω・`) 

53 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 15:15:26.94 ]
まだLINQ敬遠してる土方もいるしな

54 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 15:17:52.70 ]
なんで新しいこと覚えられないのにWPFやろうと思うんだろう

55 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 18:18:02.04 ]
スレ違いは承知の上、ついでだから教えて欲しいんだがLINQをキチッと勉強するのにいい教材とか何かない?
上っ面程度のことは分かるんだけど、何ができて何ができないか、全体が把握できてない

用途は主にLINQ to Object

56 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 18:39:25.49 ]
普通のSQL覚えればいいと思うよ
プログラミングやるなら何にでも使える必須知識

57 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 18:46:42.26 ]
今時LINQ == クエリ構文って認識は古いってレベルじゃないと思うな

58 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 18:54:28.08 ]
Rxとの組み合わせがいいって
ReactivePropertyのこと?

59 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 18:59:14.09 ]
LINQはコレクションというかデータソースとでもいうのか
そういうのを簡潔に回すが全てじゃね?見つけるでもいいけど

60 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 19:18:34.01 ]
簡単なもの(横1920のモニタでメソッド形式でなら1行で書ける程度レベル)ならメソッド形式がいい
でも複数のコレクションを結合させて混み入った条件つけて抽出したり、
メソッド式でも一行で収まらないくらい長くなる場合はクエリ式の方がいいよ



61 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 20:23:32.18 ]
1920なら220文字は行けそうだ

62 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 20:55:40.93 ]
Update2 CTPのBlendより前からでてたPreviewの方ができがいいな・・・

63 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 21:05:58.16 ]
コードビハインドに書くのって画面遷移とコントロールの設定くらい?

64 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 21:20:58.36 ]
ソケット通信の受信結果をListBoxで表示するプログラムを書いています。
受信時間の昇順に並べて、
スクロールが最下部にある場合に新しいデータを受信したら、
スクロールを一番下に移動して最新データを表示させたいと考えています。
これをやるにはListBoxのテンプレートをいじらないといけない感じでしょうか

65 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 21:50:25.58 ]
>>64
なんかすげー似たようなアプリ作ってるな
俺もソケット通信の小さなアプリ、WPFで作っているわ

質問には答えられんがタイムリーなので

66 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 21:51:22.97 ]
テンプレートまったく関係なくない

67 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 21:55:30.71 ]
>>64
ListBox.ScrollIntoView じゃ駄目かい?

68 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 22:00:48.30 ]
>>65
案外同じアプリ作ってるかもしれませんね

>>66
ListBoxのScrollViewerいじってるんですがどうもうまく機能しないんですよね
それでテンプレートいじったらなんとか実現できないかと思った次第です

69 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 22:18:20.72 ]
>>67
常に下スクロールするのであればそれでよいと思います。
しかし、ユーザが上にスクロールしている場合には下スクロールさせたくないのです。
上のデータを見ているときにいきなり最下部にスクロールしてしまってはユーザが困惑してしまうと思うので。

まあ、素直に受信した降順に並べれば悩む必要ないんですが

70 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 22:35:04.58 ]
スクロールが一番下にあるときだけScrollIntoViewするBehaviorでも書けばいいんじゃないですかね



71 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 22:37:04.52 ]
そんな特殊な振る舞いをわざわざBehaviorにする意味は?
コードビハインドとなんも変わらんというか無駄に複雑になるだけ

72 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 22:49:49.55 ]
FormにしろWPFにしろリストボックスは遅いんだよ
これはWindowsそのもののGUIがプアだからどうしようもない
OS X最強なんだなこれが

73 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 22:55:10.46 ]
勝手にUITableViewDataSourceでも使ってろ

74 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 22:58:22.01 ]
>>68
ScrollViewer がうまく機能しないっていうのは、どういう状況で何が機能しない?

75 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:09:30.49 ]
>>58
ん、そんな感じの。
ReactveUIでも良いかもね

76 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:18:53.31 ]
>>74
あまりうまく説明できないかもですが、
今はScrollViewerのScrollChangedが発生した時に、受信データ数が増えていて、スクロールバーの高さが以前のスクロールバーサイズ以上の値だった場合に最下部にスクロールするようにしているのですが、
これだと連続で複数のデータを受信した場合にきちんと最下部にスクロールしません。

77 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:24:15.78 ]
LivetでVMからのMessenger.RaiseでBringIntoViewするものを即席で作ってみたけど
ListBoxのItemsPanelがVirtualizingStackPanelだから
VMがコントロールと結びついてないと反応しねぇ。

こういう場合どうするんだろう。

78 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:31:12.55 ]
>>76
ListBox.UpdateLayout を使って強制的にレイアウトを再計算させるか、
Dispatcher.BeginInvoke(hoge, DispatcherPriority.Loaded) を使ってレイアウト計算後にスクロール処理を走らせてみては?
もしくは、ListBox.ItemContainerGenerator の StatusChanged イベントを待つとか。

最初の ScrollChanged が発生した段階では、後に受信したデータの ListBoxItem 要素が生成されてないのかも。

79 名前:デフォルトの名無しさん [2013/02/05(火) 23:39:43.87 ]
WPF初心者なんですが、ユーザーコントロール作る場合は、元々のユーザーコントロールを相対配置して作らないといけないんですかね?

80 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:39:59.14 ]
XAMLからViewModelのメソッドってどうすれば呼べますか?
Click="ViewModel.Ok"とかでいけます?



81 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:41:58.33 ]
いけません

82 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:42:10.28 ]
>>78
即レスありがとうございます。
それだといけそうな気がしてきました。
改修長くなりそうなので結果報告は明日当りになると思います。

83 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:45:03.09 ]
>>81
じゃどうするんですか?
わざわざコードビハインドにViewModelのメソッドを呼ぶメソッドを作る感じ?

84 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:47:11.81 ]
>>80
これ読んで。
Model-View-ViewModel デザイン パターンによる WPF アプリケーション
msdn.microsoft.com/ja-jp/magazine/dd419663.aspx

85 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 02:00:05.02 ]
いけません。じゃねーんだよw CallMethodActionくらい教えたれやw

86 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 02:12:02.76 ]
CallMethodActionなんてクソ冗長なもの使わなくても添付プロパティで
<Button CallMethod.EventName="Click" CallMethod.MethodName="Ok"/>
みたいに書けるようにするのは割と簡単にできる
添付プロパティの勉強には丁度いい

87 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 02:47:53.68 ]
ここでFWの上に自作FW載せる的な解はどうかと思うんだがw 確かに可能だし簡潔だが
86やるなら、MSのPasswordHelperあたり見たらいいぜ

88 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 03:13:16.53 ]
76ですが、受信のたびにUpdateLayoutかけると一番したにスクロールさせることができました。
ただ、自分がListBox内に重い処理をしていることもあり、かなりもっさりしてしまいました。
なので無理に昇順にひょうじさせるのではなく、降順にならべてスクロールしない方向でいこうかと思います。

89 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 11:14:02.13 ]
>>84
そいつはWPF切った裏切り者だぞ

90 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 11:56:10.29 ]
複数の画面で全く同じリストを選択させるリストボックスがあって、そのリストの値ををXAMLのResourcesDictionaryに書く場合は、
XAMLをコンパイルする段階で値が決まっている必要がありますか?



91 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 11:56:55.11 ]
ユーザーコントロールにしろ

92 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 13:04:06.78 ]
<StackPanel Orientation="Horizonal">
<RadioButton HorizontalAlignment="Center"/>
<RadioButton HorizontalAlignment="Center"/>
</StackPanel>

これでラジオボタンが水平方向に二つ、並ぶはずが左寄せです

原因はなんでしょうか

93 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 13:14:43.78 ]
親がHorizontalなStackPanelであること

94 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 13:48:56.73 ]
すげーワラタ

95 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 13:50:08.54 ]
>>93
ありがとうございます。
確かにOrientatinはずしたら真ん中に寄りましたが、垂直方向に二つ連なりました

水平方向に、二つのラジオボタンを中央よりに配置させる方法はないんでしょうか?
AndroidのXMLだったらできたのですが・・天井

96 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 14:26:11.33 ]
StackPanelのHorizontalAlignmentをCenterにするとか
既定ではStretchなのでStackPanelの横幅は親コントロールと同じになる(マージンとか除く)
CenterにするとStackPanelの横幅は子コントロールを描画するのに十分な横幅だけになる

97 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 15:36:56.36 ]
>>95

Grid.ColumnDefinitions使ったほうがいいんじゃないの?

98 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 15:56:26.47 ]
やっぱりWPFはだめですね

99 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 16:25:47.44 ]
>>96-97
やってみます
ありがとうございました

100 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 21:27:08.29 ]
テキストボックスを継承したカスタムコントロール作ったんだけど、おいても何も表示されない
どういうことですか?



101 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 22:31:45.28 ]
そーゆーことですな

102 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 23:11:29.78 ]
ViewModelからViewを操作ってみんなどうしてる?
ダイアログや画面遷移くらいは妥協して、ViewModelでやってしまいそうだ

103 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 23:13:36.76 ]
IHogeViewインターフェイスとコードビハインドだな
メッセージは嫌い
ダイアログや画面遷移はむしろVMからサービス呼び出す形の方が再利用が利いていいと思う

104 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 23:27:51.20 ]
サービス?
メッセンジャーは使いづらいよなぁ

105 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 23:31:24.00 ]
>>104
サービスはPrismの画面遷移を見ればわかる
要は差し替えさえ可能ならいいわけで、MVVMの枠にとらわれないでやるってことだ

106 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 23:38:21.57 ]
そんなまどろっこしいことしなくていいよ
インスタンス作ってShowしちまえ

107 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 07:53:20.98 ]
Prismの仕組みは知らんが抽象的な画面遷移サービス的なの作ってそこに対してVMからお願いすればいいんじゃないかね。
テストなどではUIは空っぽだけど、実際にはそのVMに対するUIとか引っ張って来れてそれに対してダイアログ出すとか。

108 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 10:12:58.05 ]
おまいら、お絵かきアプリみたいの作るとしたらどこまでMVVMとか使う?
MVVMでなくてもいいんだけどいろいろなロジックをどこにどう分離するかを聞きたく。
あとShapeを使おうと思ってるんだけどこれのあたり判定とかってShapeを列挙してできるもんだっけ?
あるPointをもとにそのShapeが上にあるかどうかを判定するような。

109 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 10:31:56.27 ]
できるんだっけ・・・って。前は知ってたんだろうな。
ShapeはUIElementだ。他のコントロールでできることならできる。

110 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 12:53:28.17 ]
UIElementでできるかわからんです(´・ω・`)



111 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 12:58:46.50 ]
できる。shapeに括る必要がないことだしggrks

112 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 14:09:19.98 ]
Geometryを使うのが一番straightforwardな方法
そういうのはMVVMあんまり有効に働かないと思う
図形のデータモデルをCommandデザインパターンでいじくり回して
それを自作コントロールの描画キャンバスで可視化するって考え方でいいのでは

113 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 15:26:36.68 ]
VisualTreeHelper.HitTestで望みのが出来そうでした。Geometryでもいけそうですが、未確認(´・ω・`)
けどストアアプリでも同じようなの必要だったんだけどそっちだと類する奴が見つからん。どっかにあるのかしら…(;´Д`)

114 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 15:47:16.54 ]
ストアアプリはVisualTreeHelper.FindElementsInHostCoordinatesで出来るみたいですね。

115 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 15:54:08.09 ]
この辺の微妙な違いはどっかで調整しないのかしら…(´・ω・`)

116 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 15:55:27.96 ]
しかしかずきはレベル高いよな
あの若さであれだけなんでも知ってるってすごいわ
俺なんてMSDN見ても理解できないからググってとりあえず使い方だけ覚えて実装してやり過ごしてるが、基本からすべて理解とか頭良すぎる
どうやったらあの領域まで上れるんだが・・・

117 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 16:07:16.48 ]
理解できないんじゃないだろ。理解しようとしないんだw
そうやってあちこちでまぁいいやって逃げてたら、基礎がないからなにもかも理解できないわ

118 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 16:26:58.04 ]
ただかずきはフォーラムでけむたがられてる気がする
自分の見た範囲ではフォーラムであまり有益な回答を
してないのでポイントを貰ってない

本人はそのことをどう思ってるのかちょっと気になる

119 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 16:57:08.50 ]
ネットwatch板でやれ

120 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 17:12:58.08 ]
たまたまかもしれないけど
大体一番最初に回答してて3〜4行ぐらいの回答
それでわかるなら質問してない気もするんだけど

であとの人がコード付きのていねいな回答しててそっちにマークがされてる



121 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 17:40:35.57 ]
しょうもな

122 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 18:33:50.30 ]
批判は余所でやれといいたい
だがみっと氏はいったいどこまで詳しいんだと、ひたすら感心するわ

123 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 18:43:37.39 ]
昔いたMVPの人も詳しかった
全然blogも更新されなくなってどうしたんだか気になる

124 名前:デフォルトの名無しさん [2013/02/07(木) 20:32:52.21 ]
カスタムコントロールについてお聞きします。
1つめ
TextBoxを継承したTextBox2のDefaultStyleにTextBoxを指定。
TextBox2を継承したTextBox3のDefaultStyleにTextBox2を指定した場合、何も表示されないのはなぜなのでしょうか?
TextBox2のStyleを指定したのだから、TextBox2のStyleに指定されているStyleで表示してくれないのですか?

2つめ
上記で作成したTextBox2のTextをOverrideして、そのTextが変更された時に他の添付プロパティを弄って変更通知を出したいのですが、どうしたらいいでしょうか?

よろしくお願いします。

125 名前:かずき mailto:sage [2013/02/07(木) 22:36:26.66 ]
最近なかなか、パソコンから回答ができなくて…。短い回答になってます。

126 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 22:49:44.23 ]
LivetのHP見れない?

127 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:10:09.20 ]
DataGridのDataContextって、DataTableではないとダメなんですか?
カラム名と同じ名前のプロパティを持させたクラスを与えてもバインドされないんですが・・・

128 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:19:40.36 ]
バインド先はItemsSourceだろ
型はIEnumerableだから、IListSourceのみの非型付DataTableは無理じゃねえかな

129 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:22:23.36 ]
ListBoxにDataTableをバインドさせて、列名を指定して、それを表示させたいんだけど、どうすればできますか?
リストとかならできますが、DataTableはよくわかりません

130 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:22:27.29 ]
>>127
リストでもコレクションでも行けるよ
DataSource設定してる?
してるならカラムでバインドがうまくいってないんじゃないのかな



131 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:24:45.41 ]
>>129
別に何も変わらん

132 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:28:02.35 ]
WPFのdatagridとEFは相性が悪い

133 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:32:56.84 ]
WPFでDataSet系は使わないな

134 名前:127 mailto:sage [2013/02/07(木) 23:34:16.80 ]
↓ この例だと何が欠けているのでしょうか・・・

namespace MVVM
{
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();  
      var m = new Model();
      m.no = "123";
      m.id = "456";
      m.flag = true;
      dg.DataContext = m;
    }

    class Model
    {
      public string no;
      public string id;
      public bool flag;
    }
  }
}

<DataGrid AutoGenerateColumns="False"Name="dg" ItemsSource="{Binding}">
  <DataGrid.Columns>
    <DataGridTextColumn Binding="{Binding Path=no,Mode=TwoWay}"></DataGridTextColumn>
    <DataGridTextColumn Binding="{Binding Path=id,Mode=TwoWay}"></DataGridTextColumn>
    <DataGridTextColumn Binding="{Binding Path=flag,Mode=TwoWay}"></DataGridTextColumn>
  </DataGrid.Columns>
</DataGrid>

135 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:38:28.67 ]
> public string no;
public string no { get; set; }

136 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:40:12.76 ]
オブジェクト一個だけ入れてどうするんだよ
コレクションに突っ込んでコレクションをDataContextに入れる

137 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:42:00.86 ]
それ以前に何がしたのか判らねえ

138 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:44:23.63 ]
WPFのDataGridはやめといたほうがいいぞ
どうせ後でWindowsFormsHost+DataGridViewに移行することになるから

139 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:53:33.98 ]
>>124
1.そういう謎仕様
2.カスタムコントロールの添付プロパティを新規で作るのは面倒臭いからやめとけ

140 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:54:34.06 ]
List<Model> modelList=new List<Model>();
var m = new Model() { no = "123",id="456",flag=false };
modelList.Add(m);
dg.DataContext = modelList;

    class Model
    {
      public string no { get; set; }
      public string id { get; set; }
      public bool flag { get; set; }
    }



141 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:55:04.02 ]
>>135-136
工数の問題でプロパティは省きました
プロパティを実装し、

var list = new List<Model>();
list.Add(m);

dg.DataContext = list;

これにしたら表示されるようになりました
ありがとうございました。

>>137-138
もう既にWPSである程度つくってしまいました・・・。

142 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:56:17.06 ]
>>140
ありがとうございました。

143 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:58:03.82 ]
DataGridをWPFで作る意味が分からん
重いし遅いしどうせWPFのメリットも活用できないんだからそこだけWindowsFormsHostでいいのに

144 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 23:59:57.25 ]
重いのは昔だけだろ
最近は改善されてるし、Winformsを混ぜるのは正直気持ち悪い

145 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:00:23.43 ]
WindowsFormsHostは表示がヒドイ
vs2012でデザイナは上手く動くようになったのか?

146 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:01:18.35 ]
>>145
関係ない
WindowsFormsHostはUserControl載せるもんだ
WinFormsのUserControlのデザイナで作ればいい

147 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:03:44.80 ]
表示壊れなくなったりスプリッタがまともに動くようになったら使ってもいい

148 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:05:50.36 ]
お前らは同時に何行出してんだよw
仮想UIって表示しているところだけリソース喰うんだろ?なら軽そうじゃん

149 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:07:21.23 ]
>>148
WinFormsと比べてみりゃわかるよ
次元が違う

150 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:08:52.44 ]
画面上のコントロールを操作したい場合って、コードビハインドに書くしかないの?
できればすべてViewModelでなんとかしたい



151 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:11:24.64 ]
>>150
そういう思考から脱却できないなら諦めてコードビハインド使っとけ
MVVMは論理的な状態が変化したことによって結果的にコントロールの状態が変わるんだよ

152 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:14:13.66 ]
M-V-VMパターンでViewModelのコマンド実行後に何か処理したいよね
d.hatena.ne.jp/okazuki/20100117/1263746037

153 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:18:31.10 ]
>>152
そこまでしてイベントハンドラを使わない意味が分からない
その点には触れてないし分かりづらいだけで実質イベントハンドラそのものじゃねえか

154 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:19:26.47 ]
Viewは本来無くてもいいってことを理解してもらわないと

155 名前:124 [2013/02/08(金) 00:19:49.86 ]
>>139
そういうことなんですか?
2つ目はどうにもできないのでしょうか?

156 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:20:49.69 ]
なんか実用度外視だよな

157 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:21:56.38 ]
VMに何でもさせるんじゃないよ
VからみるとVMもMも変わらない
ただのモデルにしか見えない

V → (VM+M)

158 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:24:58.04 ]
MVVMのこういう記事読むと
 本 末 転 倒
この言葉が頭に浮かぶことがなんと多いことか

159 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:27:51.07 ]
V+VM M
こうだろ?

160 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:30:01.33 ]
>>159
それは勝手に人間様がそう思ってるだけで
Vから見たらVMはV側じゃないM側

ビジネスロジックが〜って言ってるのは人間だけでコード上は
VMはVの下請けじゃない



161 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:33:37.55 ]
あらゆる物をゴールデンハンマーで解決しようとすんのは雑技よね
あるいはcode golfに近いか
そんなもん初心者に読ませないで欲しい

162 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:34:59.83 ]
>>160
でも実際の役割はそうだろ?
VMでVが表示するためのプロパティ作ってるんだから

163 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:40:24.89 ]
いいえ

VからM見る(binding)のも
VからVM見るのも
同じ

164 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 00:44:16.12 ]
セグメント?が変わると区分も変わるだろうけど…

165 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 12:08:18.69 ]
視点を変えればそう捉えることもできるだろう
仮想マシン側からILを見ると、C#もVBも大差ないようにね

166 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 12:15:08.11 ]
>>163
宗教論争してもしょうがないけど自分はVMはVに画面表示に専念させる為のブリッジだと思うけどね。テストなども考慮した上での。

167 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 12:24:04.25 ]
XAMLでColorAnimationのStoryboardを定義したとして、実行時に値によってFromの色を変えるような事って出来たっけ?
具体的には値が変わった時、前よりも値が増えた時と減った時で色を変えようとしてます。
変わった時点でその前のStoryboardを止めて新しいのをスタートさせてる。
コードビハインドで書いた奴は思った通りに動いたけれど。
定義だけXAMLでそのスタート、ストップはコードビハインドでも構いません。

168 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 12:33:39.16 ]
またお前か。動いたんだしそれでいんじゃねーの

169 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 14:03:01.94 ]
より良い書き方を追求するのは良いことだろ( ´Д`)y━・~~

170 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 14:05:13.88 ]
俺は良いと思わないので却下



171 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 15:37:26.03 ]
なぜWPFのコントロールはvisibility=falseで表示になるんでしょう?

172 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 15:39:23.38 ]
>>170
知らない無能は黙ってればよいよ。

173 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 16:15:30.86 ]
>> 171

Visibilityに設定できるのはVisibility列挙値(Visible,Hidden,Collapsed)だけ

それ以外の値(true,falseとか)は無視されるので
デフォルト価のVisibility.Visibleになってるだけだな

174 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 16:20:33.09 ]
DataGrid_CellEditEndingイベントの引数eから、DatagridCellの参照を得るのは無理なのでしょうか

e.EditingElement as DataGridCell

はnullでした

175 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 16:30:36.74 ]
デバッガで止めて引数一通り確認することから始めれば

176 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 16:31:15.89 ]
>>173
!!!
ありがとうございました。

177 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 16:36:33.61 ]
>>175
e.RowからDataGridRow
e.ColumnからDataGridTextColumn

が取れました

178 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 17:22:09.09 ]
createGraphicsがないんだが

179 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 17:37:52.46 ]
急にレスが増えたNE

180 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 18:27:00.12 ]
そうですか無いですか
無いんですよWPFにはそういうの
絶望した?した?



181 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 19:54:04.21 ]
依存関係プロパティの簡単な作り方ってあります?

182 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 20:09:21.03 ]
{get;set;}みたいなものは無いのか?ってことならそんなもんないよ
言語が支援してるわけじゃねーもん

183 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 20:19:01.12 ]
propdpと打ってTab二回

184 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 20:26:02.36 ]
あの宣言の面倒くささには
IDEがあるにしても限度は必要だと感じてしまうよな

185 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 21:41:56.33 ]
新規で作った依存関係プロパティのセッターで初期から用意してある依存関係プロパティを操作したいんだけど、これはオーバーライドする感じ?

186 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 22:37:59.28 ]
かずきさん、ここ見てみみたいなんで要望あるんですが
Rx入門v0.1.pdfをもう少し初心者向けの解説増やしてもらえませんか?
具体的にはイベントに関してなんですが、neueさん等もWPFやWP前提でFormでどう使えばいいのか実装例含めて解説して欲しいです。

187 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 22:40:23.07 ]
ツイッターかブログで直接言えや

188 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 22:41:47.16 ]
こりゃあからさまに宣伝だな。臭過ぎる。

189 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 22:53:46.06 ]
悲しいことにRxはもうオワコンなんだよ・・・

190 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 22:54:44.25 ]
>>187-188
文句あるならお宅らが答えてもいいんじゃよ?
答えられないでしょ?



191 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 23:02:27.51 ]
WPF自体 将来性はどうなの?
このままフォームアプリケーションと同時でサポートされていく感じ?

それともsliverlightのように死亡確定?

192 名前:185 mailto:sage [2013/02/08(金) 23:11:00.84 ]
ちょっと書いてみたんですが、どこが間違っているか教えて下さい。
ideone.com/LoSjNb

193 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 23:13:35.15 ]
>>191
そもそもクライアントアプリに将来性がない
MSはHTML5を全面に押し出して今絶好調みたいだからこのままどんどんwebにシフトしていく

194 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 23:13:59.83 ]
誰にもわからないと思うよ
このまま微調整だけくわえられていくのか
大幅に変わるのかも分からない
今のままだとフェードアウト確定

言語からサポートを受けるようになれば…

195 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 23:36:52.60 ]
まあとれも深追いしないのがいい

196 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 23:39:53.46 ]
>>192
プロパティの setter じゃなくて、DependencyProperty.Register に渡す PropertyMetadata の PropertyChangedCallback 内で処理する。
setter、getter はユーザーコードから使いやすくするための単なるラッパーで、フレームワークからは呼び出されない
(フレームワークがプロパティ値を設定・取得するときは SetValue・GetValue が使われる)。

197 名前:185 mailto:sage [2013/02/09(土) 00:04:16.26 ]
>>196
ありがとうございます。
そういうことだったんですね、修正しました。
ideone.com/Naxl7H

でも、静的なのにどこに値を格納してるのかわかりません。

198 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 00:07:24.91 ]
WPFとしては分からんけどXAMLとしてはしばらく無くならんとおもうけどね。
多分WinRTでデスクトップアプリも作れるようにすると思うし。

HTMLはそれだけって風にはならなそうな気がするけど。
WinMDの実装技術としてHTMLも選べてネイティブと一緒にできるってのが正しいあり方な気がするわ

TypescriptでXAMLをナチュラルに使えるようになると面白いんだが。

199 名前:196 mailto:sage [2013/02/09(土) 00:29:14.67 ]
>>197 のコード、ValidateValueCallback じゃなくて、PropertyMetadata のコンストラクタに渡す PropertyChangedCallback を使う。間違えてる。
ValidateValueCallback は値の検証用。

WPF フレームワークのプロパティ値は SetValue で直接値を代入した時だけメモリが確保される仕様。クラスのインスタンスは単なるハンドル。
インスタンスが作られた時に全てのプロパティ用にメモリを確保すると、メモリをバカ食いするし、他のインスタンスと同じ値ばっかりで無駄が多い、
あと、Style や VisualTree とかで同じ値に設定する状況でインスタンス一個一個の値を設定することになって重い。
それを避けるために、他と値が共有できる状況なら、値を共有して軽くしてる(プロキシ・パターンとかフライウェイト・パターン)。

200 名前:196 mailto:sage [2013/02/09(土) 00:33:41.69 ]
訂正 VisualTree → VisualTree とかで使われるプロパティ値の継承



201 名前:185 mailto:sage [2013/02/09(土) 01:23:12.30 ]
>>199
度々ありがとうございます。
WinForms感覚で考えると全然駄目なんですね、
無事、依存関係プロパティ自体を作ることが出来ました。
ideone.com/nRVJ6b

ただ、バインドがうまく入ってないのか、Textの値が変わってくれません。

202 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 05:13:08.92 ]
OnDateChangedのSetValueは、引数dが実体なんだから
TextPropertyにtextbox2を付けないとダメじゃね。subがsharedだし見えないでしょ。

203 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 05:16:56.16 ]
>>201

どううまく行かないのか書いてないからわからんけど
バインドしてるプロパティの値を変えても、表示されるTextに変化がないってことなら

@XAMLでのバインドの仕方が間違ってる。OneWayないしTwoWayに。(OneTimeやOneWayToSourceではダメ)
AプロパティにINotifyPropertyChangedを実装してない

このどっちかじゃないかな

ちなみに、やりたいとこがDate型の値をyyyy/MMで表示したいだけなら
わざわざTextBoxを継承した独自のコントロール作ったり大がかりなことするより
Converterかました方がずっとお手軽だと思うw

204 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 05:17:20.37 ]
あ、アホなこと言ってた。それはいいのか

205 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 05:38:13.39 ]
あと入力されたときTextからDateValueに値突っ込まないとダメじゃね

206 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 12:26:35.07 ]
>>201
新しいプロジェクト作って、そのコードと以下を追加して、実行してみたけど、期待通りに表示されたよ。

<StackPanel>
&nbsp; &nbsp;<local:TextBox2nd x:Name="_textBox2"/>
&nbsp; &nbsp;<Button Content="Set" Click="Button_Click_1"/>
</StackPanel>

Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
&nbsp; &nbsp;_textBox2.DateValue = DateTime.Now
End Sub

最小限の構成で試してみたら?

207 名前:206 mailto:sage [2013/02/09(土) 12:31:12.87 ]
あ、スペースを &nbsp; に変換して書き込んでしまった。削除して読み替えて。

208 名前:185 mailto:sage [2013/02/09(土) 13:23:42.08 ]
>>203
TwoWayにしています。
バインドするプロパティにINotifyPropertyChangedを実装していなかったので、実装しましたが、
Textに日付の文字列が入ってくれません。
他にもお手軽な方法があるのがあったんですね、まぁいつかはわからないといけなくなると思うので練習がてらカスタムコントロールでやっていこうと思います。

>>206
実行してみましたが、DateValueに値が入っていることが確認できました。
自分もそこまでは行くんですが、それの後にTextに日付が入らないことが最後の問題なっています。

まさかここまで難しいとは思いもよらなかったです。
ideone.com/YLTgxE

209 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 14:05:51.74 ]
ListBoxにRichTextBoxを張り付けて項目を表示しているのですが、
RichTextBoxをクリックしてもListBoxItemが選択されません。
RichTextBoxをクリックしてListBoxItemが選択されるようにするにはどのようにすればいいでしょうか。

210 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 17:57:00.97 ]
>>208
そのコード、TextBox を継承するなら TextProperty を再定義する必要はないよ。
TextBox が公開している OnTextChanged を override すれば実現できる。

何らかの理由で TextBox.TextProperty の PropertyChangedCallback を置き換えたい場合は、
静的コンストラクタで TextProperty.OverrideMetadata メソッドを使えば可能。再定義は不要。



211 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 19:21:13.54 ]
Bitmapに相対パスで画像を入れたいのですができません

Bitmap bmp = new Bitmap("test.bmp");
こう書いたのですがエラーが出て強制終了します
ファイル名を絶対パスで書くとエラー出ませんでした
ファイルはカレントに置いてあるはずなんですが、書き方間違ってますか?

212 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 19:39:44.62 ]
exeとbitmapを同じフォルダに置いてexeを起動してみてはどうか

213 名前:185 mailto:sage [2013/02/09(土) 20:56:01.55 ]
>>210
再定義をやめても、今までどおり動作しました。

Dateを入れたときにTextには反映されていますが、Textを変更した時にDateに反映されないのは
DateValueにPropertyChangedが実装されていないからでしょうか?

214 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 21:23:44.02 ]
namespace Hoge
{
   public class MyConverter : IValueConverter
   {
   }
}

   <StackPanel HorizontalAlignment="Center"
      VerticalAlignment="Center"
      xmlns:local="clr-namespace:Hoge">
         <CheckBox IsChecked="{Binding Flag, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={MyConverter}}" />
   </StackPanel>



コンパイルが通りません
エラー1XmlNamespace、Assembly または ClrNamespace が Mapping 命令にありません。 行 19 位置 41.
エラー2型 'MyConverter' が見つかりませんでした。アセンブリ参照が失われていないか、また、すべてのアセンブリがビルドされているかを確認してください。


何が悪いのでしょうか

215 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 21:30:23.42 ]
理解不足なんじゃないの?

216 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 21:31:33.93 ]
local:MyConverter

217 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 21:32:53.56 ]
>>212
exeを起動してみたところ古いデータになっていて、デバッグなしで実行していたせいでした。
ありがとうございます

218 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 21:38:57.58 ]
>>215
はい

>>216
ありがとうございました。

219 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 21:46:55.62 ]
>>209
Stack Overflow: Selecting a Textbox Item in a Listbox does not change the selected item of the listbox
stackoverflow.com/questions/653524/

>>213
> DateValueにPropertyChangedが実装されていないからでしょうか?
関係ないんじゃない? OnTextChanged にブレークポイントを置いて実行してみて、呼ばれているかどうか確認してみれば?

>>214
"Converter={MyConverter}" が駄目。そこにクラス名は書けない。下の解説を読みなおして。
MSDN : IValueConverter インターフェイス
msdn.microsoft.com/ja-jp/library/system.windows.data.ivalueconverter.aspx

220 名前:185 mailto:sage [2013/02/09(土) 23:45:57.49 ]
>>219
無事完成しました。
ありがとうございます。
ブレイク貼ったら全然通ってませんでした。
イベントにして解決しました。Shadowsでなんで走らなかったのかは謎ですが・・・
ideone.com/mYEQKK

身近にWPFに詳しい人がいなかったので、とても助かりました。
独学じゃ挫折しそうです。
ありがとうございました。



221 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 23:55:55.36 ]
Shadows と Override じゃ全然意味が違うぞ。
>>210 は Private Shared Shadows Sub OnTextChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs) じゃなくて、
Protected Overrides Sub OnTextChanged(e As TextChangedEventArgs) を使えって意味だと思う。

222 名前:185 mailto:sage [2013/02/10(日) 01:00:04.08 ]
>>221
>>220のLostfocusイベントのところをすでにあるOnLostFocusをOverrideしたら、同様に動作しました。
こっちのほうが見栄えがいいですね。
ありがとうございます。
これは依存関係プロパティとは関係ないのでSetValueとかではなく、通常のプロパティを弄る感じなんですね
やっといろいろ分かって来ました。

223 名前:デフォルトの名無しさん [2013/02/10(日) 23:34:37.87 ]
MVVMってエントリーポイントはどこになるんですか?
イベント駆動だと、StartupUriに書いたクラスのコンストラクタもしくはLoadedイベントに書くはずですが・・・

224 名前:デフォルトの名無しさん mailto:sage [2013/02/10(日) 23:41:03.48 ]
VMのコンストラクタでやるか、それでできないことならイベントハンドラからVMのメソッドを呼べ

225 名前:デフォルトの名無しさん mailto:sage [2013/02/10(日) 23:49:23.51 ]
それはアプリケーションが常にVMを生成することを担保しないといけなくないですか?

軽く調べてみたら、App.xamlのstartupuriを消して、startupにして
そこからVMとVを作るという方法があるようですが・・・

226 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 00:14:38.27 ]
そんなもんMVVM関係ないだろう。App.Startupイベントでも使え。
MVVMはビューをスマートに実装する仕組み以上のものじゃない。一つのビューに閉じた話。

227 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 01:37:28.79 ]
むしろMVVM的なものをアプリの何処で生成したらいいかって話じゃね?
Prismとかでググれ

228 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 03:28:16.72 ]
formsで言うUpdate()やInvalidate()のようにコントロールを強制的に再描画させたいのですが、どうやればできますか

229 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 10:27:08.19 ]
InvalidateVisual
でもWPFではDrawingを動的に変更するのはやらないのが基本。Visualを動かせば勝手に反映される。
頻繁なOnRenderとかもってのほか。

230 名前:225 mailto:sage [2013/02/11(月) 12:21:55.80 ]
分からなかったのは

アプリケーションを起動したときに、最初に

DateContext = new Model();

とかやるじゃないですか
ここはどこでやるべきなのかなーと

Windows.csには原則何も書いてはいけないらしいですから、Viewではないですし



231 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 12:26:06.09 ]
>>230
コンストラクタに書くのが普通
コードビハインドを書いてはいけないなんてことはない。それ以外のコードも書くし必要ならイベントハンドラも使う。

232 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 12:30:45.77 ]
有象無象が発言した「原則」とかなんで信じるの?馬鹿なの

233 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 12:44:15.89 ]
DIやサービスロケータを使わないのなら、VMが依存するサービス類の依存性解決もVで明示的にやることになるな

234 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 12:52:55.48 ]
ほーらまたMVVM教が一人の初心者を狂わせたぞ
責任取れカス

235 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 12:58:06.51 ]
テストのためのパターンなのにパターンそのものが目的みたいになってしまってるよな。
MVVMやるならVMの単体テストを書け。
Prismがなんでああいう構造になってるかなんて自分でテスト書いてみないと理解できない。

236 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 13:04:44.76 ]
デザイナ用のデータコンテキスト(d:DataContext)もあるし、インスタンスの生成をどこでどう制御するのがベストなのかよくわからん

237 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 13:20:59.10 ]
原則がなぜ存在するのか、原則を外れていいのは時はどんなときか
これらを知らないと原則を盲目的に守るしかなくなる

コードビハインドをあまり書くなってのは、単にUIに依存したコードはテストしにくいから

238 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 13:25:27.57 ]
コードビハインドっていい事だよね

239 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 13:32:09.37 ]
Modern用のKone見た人おる?

240 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 17:47:59.48 ]
>>229
ありがとうございます



241 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 18:30:51.16 ]
ViewModelにIDisposableなオブジェクトを持たせることはありでしょうか。
ViewModelもIDisposableにして、Window終了時に確実にDisposeを呼びたいんですが、
Closedイベントで (DataContext as IDisposable).Dispose(); とするのが普通ですか?

242 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 18:36:44.80 ]
それでOK

243 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 18:42:50.36 ]
ただas使ってるのにチェックなしでDisposeするのは変

244 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 06:31:41.50 ]
必ずやるならfinallyでやるとすると、VM型の参照持っておかね

245 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 07:19:53.04 ]
MVVMってViewModel.csに一つのイベント事にICommandを実装したクラスを書くのがひとつの形なんですか?


www.atmarkit.co.jp/fdotnet/chushin/introwpf_06/introwpf_06_02.html

つまりbuttonが10個あるとして、10個全てのイベントの中身が違うとしたら、
ViewModel.csにICommandを実装したらクラスを10個書く・・・

そういうことを上の記事は推奨しているように見えます

246 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 07:47:09.83 ]
賛否あるだろうけど、標準でやれるのはソレだけだし、そうだと思う。
クラス10個は書かないでいいだろうけど…。
よく使われてるのは、汎用的なICommandを実装したクラスを1つ用意して、
それを使いまわして、個々の実装はデリゲートでメソッドを受け取るって形だと思う。

247 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 07:50:58.39 ]
DelegateCommand とか RelayCommand でググれば分かると思う

248 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 08:31:47.05 ]
>>246-247
ありがとうございました。
DelegateCommandについては上記記事にも書いてました

249 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 09:04:51.15 ]
F#なら匿名型でかけるお(´・ω・`) 

250 名前:デフォルトの名無しさん [2013/02/12(火) 14:37:27.13 ]
ラジオボタンのIsCheckedを触りたい場合は、VMにboolのメンバー変数持たせて、

IsChecked={Binding Path=変数 Mode=Twoway}

とするのが一般的ですか?



251 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 14:56:25.52 ]
メンバー変数でなく通知プロパティとバインドさせるのは俺もよく使うが、
問題は「一般的かどうか」より「必要かどうか」だろ

252 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 14:57:33.81 ]
変数じゃダメ。プロパティにしてやらないとバインドできない。

IsChecked={Binding プロパティ名, Mode=Twoway}

で行ける。

253 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 15:15:54.97 ]
ラジオボタンという部分が軽視されてるね

254 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 15:21:35.29 ]
質問の振りした多重ひっかけ問題かw

255 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 15:23:37.40 ]
ラジオボタンならコンバーターを使って、
その一纏まりを全て1つのプロパティにバインドするのが楽だな。

256 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 15:25:04.20 ]
テストコード書いて愕然とする人が多そうだね

257 名前:250 mailto:sage [2013/02/12(火) 15:26:31.34 ]
ありがとうございます
仰る通り、プロパティにしないと駄目でした
なおかつ、Yes/Noの2つのラジオボタンがあって、そのIsCheckedを一つのbool変数で排他的に管理したかったら、
YesのsetにonPropertyChangedでNoのプロパティが更新したことを通知したりしないといけなかっり‥

コピペプログラマーにはWPFは厳しいようです

258 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 15:27:54.96 ]
ちょっと!
違うでしょwww

259 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 16:11:16.21 ]
コピペで作るには多少の理解も必要だろうなぁ。
覚えてしまえばコピペできるだろうけど。まぁ当たり前の話か

260 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 19:27:29.46 ]
WPFでラジオボタンのIsCheckedにバインディングすると
更新時に問題がでるのでそのことを聞いてきたのかと思った



261 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 19:51:32.70 ]
よかった、問題なんてなかったんだ

262 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 20:50:56.66 ]
テキストボックスのContentを右寄せに規定値を設定したいのですが、うまくいきません。
どこがまちがっているのでしょうか?
TextBox2はTextBoxを継承したカスタムコントロールです。
コンストラクタに以下を書いています。
HorizontalContentAlignmentProperty.OverrideMetadata(GetType(TextBox2), New FrameworkPropertyMetadata(HorizontalAlignment.Right))

263 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 21:15:48.55 ]
まずはデザイナいじって目的が達成できるレベルまで実験しろ

264 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 21:36:24.01 ]
具体的にどういうことですか?

265 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 22:08:45.41 ]
<TextBox HorizontalAlignment="Right" />が実現したい内容なのか?

266 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 22:16:04.34 ]
HorizontalContentAlignment="Right"が実現したいことだったのですが、HorizontalContentAlignment.Rightが見つからなかったので
HorizontalAlignment.Rightを使用しました。

267 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 23:12:31.76 ]
TextBox の HorizontalContentAlignment は扱いがちょっと特殊で DefaultValue なら TextAlignment が優先される仕様なので、
TextAlignment を OverrideMetadata するか、Style で指定したほうが良いよ。

268 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 23:40:17.58 ]
>>267
そんな仕様だったんですか。
ありがとうございます。

Styleで指定する方法もありましたね

269 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 23:56:28.96 ]
今XAMLのほうでやってみたんですが、
TextAlignment=center
HorizontalContentAlignment=left
左寄せ
TextAlignment=center
HorizontalContentAlignment=right
右寄せになってしまいます。

難しいですね。。。やっぱりHorizontalContentAlignmentをOverrideMetadataするしかないんですかね?

270 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 00:04:30.33 ]
シコシコと15個ぐらいのIsEnabledをラップしたプロパティを書いていたら
CanExecuteで設定できることを今知りました・・・

この15個ぐらい書いた

private _IsEnabled
public IsEnabled
{
set { _IsEnabled = value; OnPropertyChanged("IsEnabled"); }
get { return _IsEnabled; }
}

ってどっかで有効活用できないものでしょうか・・・



271 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 00:06:24.49 ]
CanExecuteはあんまり使わない方いいと、ここの方の教わりました。
Visibleも制御できたらよかったのに

272 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 00:22:01.06 ]
>>269
何がやっぱりなのかわからない。単に既定値を右寄せにするだけなら >>267 で達成できるはずだけど?

273 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 00:45:10.10 ]
>>270
CanExecuteはコマンド一つ一つ個別に設定しないといけないから糞
コマンドを独立したクラスで扱う場合にはいいが一般的なMVVMには面倒なだけだからプロパティでいい

274 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 00:51:38.87 ]
>>269
つーか、もうコンストラクタでフツーのCLRプロパティ方でRight突っ込めばそうならね?

275 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 08:53:09.53 ]
>271
>273
分かりました。ありがとうございました。

276 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 19:35:56.39 ]
DataGridのある行と行を比較して、内容が違うセルがあったらForeGroundを変えたいんですんが、やり方がわかりません。

DataContextはListコレクションです。

MVVM風じゃなくてとにかくゴリゴリ力押しで実装しようとして、
var dv = datagrid.ItemSource as DataViewとやったらキャスト失敗してnullになりました

だから、DataGridの行の参照変数ですら取れないんですが&bull;&bull;&bull;

277 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 19:56:20.44 ]
>>271,274
それでも問題なくいけましたが、>>267を勘違いしていました。
無事OverrideMetadataで実装することが出来ました。

278 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 22:05:36.70 ]
>>276
ItemSourceは自分でいれたListが入ってるんじゃないのか

比較はそのlistつかえばわかるとして
色はC#ごりごりでこうやるみたいだな

//1行目
var dataRow = (DataGridRow)this.datagrid.ItemContainerGenerator.ContainerFromIndex(0);
//1番目のセル
var txtblock = (TextBlock)this.datagrid.Columns[0].GetCellContent(dataRow);
//赤にしる
txtblock.Foreground = new SolidColorBrush(Color.FromRgb(255,0,0));

279 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 22:08:09.32 ]
あ、すまん
これじゃ再利用されたところが色かわっちまうのか・・

280 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 22:08:25.79 ]
みなさんはドッキングってどうしてますか?
avalon dockを使おうと思ってるんですが、情報が無さすぎてどうにもできません



281 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 22:09:54.21 ]
>>276
きちんとキャストしてあげてばいいんでない?

282 名前:276 mailto:sage [2013/02/13(水) 23:53:08.80 ]
方法がよくわからないので、マルチバインドを試してみます・・・

283 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 09:51:37.67 ]
ForegroundにマルチバインドしてコンバーターでBrushに変換するでもよさそうだな。

284 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 22:16:48.87 ]
ListBoxのListItemの上にヘッダーみたいなのをつけることができますか?

285 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 22:21:07.91 ]
ヘッダーの意図が分からんが、ListViewとCollectionViewSourceでグループ化?

286 名前:276 mailto:sage [2013/02/14(木) 22:28:34.75 ]
ここに書いてある方法でセルを取ってゴリゴリ実装しました
techiethings.blogspot.jp/2010/05/get-wpf-datagrid-row-and-cell.html


ところで、VMからバインドを通じてUI弄る場合は自動的にUIスレッドで実行されるみたいですが、
バインド通じないでVMからUIいじろうとしたら、落ちるんですね・・・

もうVMにVの参照持たせて、Window.Dispatcherの参照もらって、VMで書いたラムダ式をDispatcherに投げました・・・

287 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 22:38:54.05 ]
PresentationFramework参照するのならApplication.Current.Dispatcherでイケるよ

288 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 22:59:41.55 ]
>>285
DataGridみたいなものをListBoxで作りたいと思ってます

289 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 23:24:40.45 ]
位置的にはControlTemplateでItemsHostになるScrollViewerの上に何か置けばいいと思うが
msdn.microsoft.com/ja-jp/library/ms754242%28v=vs.80%29.aspx

この方法で行も含めて縦に割るのは難しい

290 名前:デフォルトの名無しさん mailto:sage [2013/02/15(金) 17:31:39.54 ]
ProgressBarのValueとMaximumにViewModelのプロパティをバインディングさせたら、画面が停止するんですが、UIスレッドを占有しちゃているんですかね?



291 名前:デフォルトの名無しさん mailto:sage [2013/02/15(金) 19:44:57.54 ]
画面が止まるって事はそういう事なんだろうな

292 名前:デフォルトの名無しさん mailto:sage [2013/02/16(土) 21:47:55.71 ]
MVVMってよく分からんけど、Vを作るときは対応するVMを作るようだから、
結局VとVMを同じクラスにしちゃってもいいよね?
例えばWindow作るときは、
<Window DataContext="{Binding RelativeSource={x:Static RelativeSource.Self}}" ...>
でOK?

293 名前:デフォルトの名無しさん mailto:sage [2013/02/16(土) 21:53:57.00 ]
VMとMの結合は強いんだから、それじゃ結局全部Vにならないかw

294 名前:デフォルトの名無しさん mailto:sage [2013/02/16(土) 21:55:51.00 ]
WPFの使い方としてはむしろそれが普通だがMVVMではない

295 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 00:16:09.70 ]
>>293
> VMとMの結合は強いんだから
ダウト( ´Д`)y━・~~

296 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 01:09:15.02 ]
VとVMよりRxでリフレクションした方がより疎結合だと思うんだけど何故かリフレクション嫌がられるよね
イベント作成なんて一度しか実行されないんだからパフォーマンスの低下なんて気にならないでしょ
VMのコマンドとか手間が半端ないんだけど、これ自動生成をVSが標準搭載しないととても使えたもんじゃないよ
InteliSence無しでコーディングするようなもんでしょ

297 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 01:11:37.09 ]
まじめにMVVMなんてやってないから気づかんかったわ
むしろやってる奴いたんだ
マゾだねえー

298 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 01:14:04.67 ]
LivetでVWのメソッドを直接呼べるよ

299 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 06:13:35.75 ]
>>295
そこを疎結合にするって、実装レベルで説明してるようなの見たことないな。
ただのラッパーじゃねっていうVMしか。
イベントでモデル貰ってVMのメンバにバインドとか、そんな感じのアホなことすんの?

300 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 09:58:42.25 ]
MVVMのサンプルでM->VMを密結合させてるやつなんかねえよw



301 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 10:43:52.82 ]
VM無くしてVのコードビハインド使ったとしても(良くないが)VMがVに密結合したとしても
M->VM|Vの疎結合って一番死守しなきゃいけないところだろ

302 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 10:45:37.39 ]
俺はXAMLにはなるべくなにも書きたくないんだけど
いいよね?

303 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 12:40:08.26 ]
RaisePropertyChanged("変数名");
これの"変数名"って文字列型じゃなくて文字列そのまま渡す方法はないんすかね

C#じゃ引数名はコンパイルすると消してしまうから無理という結論にはなったんですが

304 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 13:33:21.56 ]
Prism?だったら、Expression<Func<T>> を受け取るヤツないか?

305 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 15:09:19.79 ]
Livetでもできるしな

306 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 15:31:46.19 ]
うるせーぞugaya
ちょっと黙れ

307 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 15:32:36.18 ]
>>302
駄目って言ったらやめてくれるんですか??

308 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 15:41:15.29 ]
ぶっちゃけWPFに未来はあるの?
winformsのサポートが亡くならない限り無さそうなんですが

309 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 15:45:15.25 ]
VB6がなくならないのに、どうやってWinFormsから移行させるんだよって話だよね

310 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 15:49:10.30 ]
そんなんでもしぶとく残ってるという見方もできる



311 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 16:05:36.88 ]
WPFの人口少なそう

312 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 16:13:40.22 ]
少なそう、なんじゃない。少ないんだよ。

313 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 16:16:20.55 ]
日本じゃ特に少ないよな

314 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 16:32:02.41 ]
クラサバ系はもう終わりだろう
クラサバで業務系アプリ作るより、Webアプリ作るのが時代の流れだし

HTML5 + JS + ASP.NET MVC >>>>>>>>>>>>>>>>>>>>>>>> Form >>>>>>> WPF >>>>>>>>>>>>>>>> Silverlight

315 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 16:47:31.39 ]
webアプリはクロスプラットフォーム対応が容易って点とインストール不要って部分と
蔵ごとの更新不要って点で、wpf勝ち目ないわ。
IE限定のVBSごりごりなイントラでレガシー炸裂してるのよりも劣る

316 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 17:33:41.30 ]
ウェブアプリとかネイティブアプリの足下にも及ばない妥協の産物なんだがw
FacebookのザッカーバーグもHTML5に期待しすぎたっつってネイティブアプリに方向転換しただろ
iPhoneだってネイティブアプリあるのにわざわざブラウザから利用するやつなんていねーよ。
パフォーマンスもユーザビリティもネイティブには到底かなわない

317 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 17:35:05.95 ]
そうか?

318 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 17:37:27.43 ]
名前を引き合いに出せば粋がれると思ってるやつなんてスルーでOK

319 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 17:38:41.87 ]
おまえら一体なにを開発しててウェブアプリですべておkとか言ってんの?
マジで気になるわ、教えて

320 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 17:41:19.44 ]
逆にwebアプリで無理な業務システムってなに?



321 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 17:43:57.46 ]
やっぱりERPかw
そらウェブで十分だわなw

322 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 17:45:59.08 ]
Webって無駄な通信多すぎなんだよ

323 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 17:47:29.36 ]
抽象論でごまかせば押しきれると思ってる奴なんてスルーでOK

324 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 21:36:18.80 ]
WPFでColorPickerってないの?
ユーザに色選択させたいときってなにをつかえばいい?

325 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 21:44:36.75 ]
何か作ってください

326 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 23:27:42.86 ]
俺は自分で作った。

けど、こだわりがなけりゃWinForms用のを使えばいいでしょ。
今ならWinFormsとWPFを併用しても違和感ないし。

327 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 01:06:22.13 ]
WindowsFormsHostってさじ加減が難しい

328 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 11:18:00.11 ]
WindowsFormsHost使わなくてもダイアログは出せるよ

329 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 12:25:43.15 ]
どうせWPFの標準メッセージボックスもWPFじゃないしな

330 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 12:26:35.79 ]
オウフwww



331 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 18:29:18.87 ]
お前らMVPVMってどうよ
PがVMとMの間にあるとかはイミフだけどナビゲーションをゴニョゴニョするのが別にあるのは良いのかとも思う。
MSDNの記事にあったMVPVMを踏襲する必要は無いと思うがおまいらの意見を伺いたく。

332 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 18:34:41.03 ]
Prismのことじゃねえのと思って読みにいったらホントにPrismの話してて笑った
そんだけ

333 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 18:36:31.37 ]
4層ってのはいいけどMVPVMがいいかといえばよくわからない
メッセージやコマンドをどうすんのか綺麗な答えを出してくれたら
MVPVMにかぎらずそっちに移る

334 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 18:37:22.81 ]
メッセージ→メッセンジャー

335 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 18:58:15.21 ]
メッセージ、コマンド、ナビゲーション含め決定だっていまだにないのかね(´・ω・`)

336 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 19:27:17.57 ]
ナビゲーションとかは別の枠組みであるものだと思っているけど、それがPかっていうと違うと思う。

337 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 22:14:41.72 ]
コレクションの依存関係プロパティってobservablecollectionじゃなくてfreezablecollectionじゃないと駄目なんでしょうか?

338 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 14:52:04.08 ]
Binding="{StringFormat=}"


ここで、小数点なしの0埋めなしで表示させたいです。

D

#.#

両方駄目だったんですが・・・

339 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 15:11:02.25 ]
>>338
ViewModelでやれよ

340 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 15:29:29.53 ]
コンバーターもあるでよ



341 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 16:23:21.16 ]
>>338
0

342 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 20:10:25.36 ]
EventTriggerにCommandを割り当てることはできない?

343 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 20:24:51.56 ]
コンパイルしたexeを別のPCで実行すると、以下のメッセージがでます。
どういうことなのでしょうか?解決方法をおしえてください。
「既に別の要素の論理子です。まず接続を切断してください」

344 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 20:25:21.41 ]
>>342
自作アクションにコマンドをバインドしてアクション側で実行すりゃいんじゃね。
なんか既成のあるかも試練けど。

345 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 20:36:15.63 ]
>>343
そのエラーメッセージでググったん?ヒットしたやつを順番に見てけば見えてくると思うが
直接的な原因は1つじゃないしなんともだ

346 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 20:41:12.98 ]
>>344
それならいけそうだ。
ありがとう

347 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 21:17:37.49 ]
いくらやってもできなくて半泣きだったら、原因わかりました
文字列型だったからでした

ありがとうございました。

>>339
Mをコレクションにいれてバインディングしているので、VMはコレクションのプロパティはあるんですが、
個々のデータのプロパティ自体は持ってないんですよ・・・・

348 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 21:30:45.39 ]
ズコーッ

349 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 23:57:28.66 ]
>>345
やってみましたが、全然みえませんでした。
画像のせいなのか、プロジェクト参照のせいなのかよくわかりません

350 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 11:13:25.75 ]
>>349
本当に別のPCのみで起きるのか?VSから実行してたりしてない?
開発マシンでexeを実行してみた?正確に原因を切り分けて行かないと



351 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 11:36:16.57 ]
>>349
VS上で動くのは偶然で正常じゃない

すでに他の要素の子になってるのをどこかに突っ込むとそうなる

352 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 11:41:24.73 ]
論理ツリーに入ってるのをどこかに入れたりするとダメ

353 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 14:51:04.29 ]
Storyboard終了時に関数を実行したいんだけどどうすれば実装できますか?

<EasingDoubleKeyFrame KeyTime="0:0:1.0 ・・・
のところに実行するための値があるのでしょうか?

354 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 15:10:50.88 ]
自己解決しました。
Storyboard.Completedでいけました。

355 名前:デフォルトの名無しさん [2013/02/20(水) 20:50:24.50 ]
DataGridのヘッダーと一行目を同じデザインにしたいんですが、
デフォルトのヘッダーデザインってどこで設定されているのでしょうか・・・

356 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 21:22:43.31 ]
>>350-352
スタックトレースをみたら、なぜかローカルパスのxamlが記述されていました。
どういう意図でこうなったかはわかりませんが、これのせいだと思われます。

357 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 22:51:50.08 ]
思われますって、それは誰かに投げてるのか、それとも解決なのか
なんかもうシラネェ…

358 名前:デフォルトの名無しさん mailto:sage [2013/02/21(木) 00:08:59.56 ]
>>356
もう最小構成で試せば?そっから徐々に追加していく感じで。
ビルドオプションとか怪しいと思うけど、WPFの糞仕様が原因っていうのもなきにしもあらず

359 名前:デフォルトの名無しさん mailto:sage [2013/02/21(木) 18:36:35.76 ]
WPFはmonoで動きますか?

360 名前:デフォルトの名無しさん mailto:sage [2013/02/21(木) 18:45:56.67 ]
動きません
あんなものサポートする気はないと明言されています



361 名前:デフォルトの名無しさん mailto:sage [2013/02/21(木) 18:52:49.63 ]
ありがとうございます
WPFという地雷を回避できて助かりました

362 名前:デフォルトの名無しさん mailto:sage [2013/02/21(木) 19:08:50.04 ]
地雷とかマイクロソフトに失礼だろ、せめて不発弾と呼べよ

363 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 01:43:08.33 ]
せめてFormでDropshadow Effectだけはサポートしてくれんかな〜・・・
WindowsFormsHostはレイヤーウィンドウサポートしてないからどうしようもない

364 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 02:46:32.95 ]
ぶっちゃけ.NET普及の最大の阻害要因は
GUIフレームワークの不出来のせいだと思う

365 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 03:22:14.47 ]
WinFormsは無茶苦茶普及してるでしょ
一から始めたプラットフォームとしてはとんでもない大成功と言っていいレベル

366 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 08:11:35.32 ]
まあ、分野によって使われ具合にかなりムラがあると思うけど、
一番ネックになったのは、やっぱり中間言語形式と実行速度でしょ

367 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 08:25:05.14 ]
俺的には初回起動時のコンパイルだけなんとかなればいいんだけどなー
新しいウィンドウ開くたびにコンパイルされるのが苦痛

368 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 09:20:13.96 ]
よく勘違いされるが初回起動時に時間がかかるのはコンパイルじゃなくてハードディスクからのライブラリの読み込み
SSDで速くなるのがその証拠

369 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 09:24:31.29 ]
マジで?

370 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 09:34:22.42 ]
>>369
msdn.microsoft.com/ja-jp/magazine/cc337892.aspx
ためになるから読んどけ



371 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 09:45:23.22 ]
>>370
サンクス。まあSSDで速くなるなら気にしない。
どうせそのうちみんなSSDになるだろうしね。

372 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 09:56:41.12 ]
>>370
モダンアプリも起動遅いんだよなー。あの遅さはどこからくるのか( ´Д`)y━・~~

373 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 10:23:55.56 ]
ストアの起動が遅いよな

374 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 11:38:51.45 ]
>>372
つーか、機能最小限のアプリのくせして、これまでの.Netアプリと比べて
はるかに遅いように思うんだが

375 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 11:56:46.59 ]
>>374
うむ、なんか.NETより遅いね。
なにが原因なのか知りたいところ( ´Д`)y━・~~

376 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 13:13:26.10 ]
グラボ強化したらどうよ

377 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 13:27:56.21 ]
Modelクラスがあるプロパティを、RaisePropertyChangedで、View(XAML)ではなくて、VMに通知することってできるんでしょうか

そのプロパティは、表示させる場合、かなり分岐が必要ですが、そのロジックはビジネスロジックじゃないので、Modelに書きたくないんです

378 名前:377 [2013/02/22(金) 13:45:57.64 ]
要は、Modelのあるプロパティが更新されるたびに、ViewModelのあるイベントなりメソッドが呼び出されるようにしたいんです

一番楽なのは、ModelにViewModelの参照を持たせて、プロパティのsetで毎回呼び出すことですが

379 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 14:28:13.57 ]
MVVMイラネって思ってるからフツーどうやるか知らないが、
VMにハンドラ書いて、通知されてきた名前と値でリフレクションでVMのプロパティ取得して、
ブチ込むじゃダメなの?デフォはargsに値持ってないけど

380 名前:377 mailto:sage [2013/02/22(金) 17:06:31.60 ]
ありがとうございます
それでできそうです



381 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 20:54:59.01 ]
タイトルバーの自作をしたいんですが、SystemCommandの復元と最大化の表示非表示の処理ってどうするのが無難なのでしょうか?
勝手にやってくれるのかと思ったけど、そうでもなかったです

382 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 21:12:29.11 ]
>>377
普通にイベントでよくね?

383 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 23:58:35.92 ]
ListViewのAllowDropをtrueにして文字列のドロップだけを受け取ろうとしたのですが
文字列以外のデータのときにDragEnterでEffectsをNoneにしても
アイテムをドラッグしたときのカーソルが禁止マークにならず
ドロップするとDropイベントが発生してしまいます
どうすれば任意の種類のデータ以外のドロップを禁止できますか?

384 名前:デフォルトの名無しさん mailto:sage [2013/02/23(土) 00:26:49.59 ]
普通にやったらそうはならないから変なことをしてるんだろう
あとは実は本当にドロップされたのに文字列データも含まれてたか

385 名前:383 mailto:sage [2013/02/23(土) 11:01:33.62 ]
ウィンドウにListViewをおいて
AllowDropをtrueにしてDragEnterとDropイベントのハンドラを追加して
DragEnterでEffectsをNoneにするだけでも再現するんですが
なにか足りてなかったり勘違いしていたりしていますか?

386 名前:デフォルトの名無しさん mailto:sage [2013/02/23(土) 12:18:40.62 ]
e.Handles=true

387 名前:デフォルトの名無しさん mailto:sage [2013/02/23(土) 12:43:35.23 ]
wpf DragEnter Effects None でググれ

388 名前:383 mailto:sage [2013/02/23(土) 14:33:20.34 ]
>>386
>>387
ありがとうございます。e.Handled=true が必要だったんですね

389 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 10:34:20.73 ]
WPFではPrismやLivetなんかのGUIフレームワークが色々ありますが、
Windows Form向けのはあまり聞かないのは何でですかね?

390 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 10:40:51.64 ]
WinForms向けのもいろいろあるぞ
WPFは一部の奴の声がでかいだけ



391 名前:デフォルトの名無しさん [2013/02/26(火) 22:13:10.04 ]
3つプロパティを持つModelクラスをListにいれて、3列からなるDataGridののItemSourceに指定しました。
各列のBindingにプロパティを指定して、列とプロパティが1:1で対応しています。

ただ、このModelクラスのプロパティは、2つは文字列型なんですが、もうひとつは列挙型であり、
その列挙型を文字列に変換するロジックが必要なんですが、
それはビジネスロジックではなくて、プレゼンテーションロジックなので、そのModelクラスには書きたくないです。

で、どこに書けばいいんでしょうか?

DataGridの特定のColumnだけバインディングソースを変えられることは可能なんでしょうか
(具体的にいうと、2列は前述のModelクラスのプロパティで、残り1列はVMクラスのプロパティをバインドしたいんです)

ItemSourceにModelクラスを指定しつつ、バインディングはModelクラスとVMクラスにするってことですが・・・

392 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:16:10.55 ]
List型の依存関係プロパティの実装方法って普通のStringの依存関係プロパティとかと異なるのでしょうか?

393 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:25:28.97 ]
>>391
IValueConverter書けばいいやん

394 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:35:27.40 ]
相談させてください。

<ScrollViewer Name="scroll">
<Image name="img" Source="***"/>
</ScrollViewer>

スクロールビューアに画像を入れてて、画像にエフェクトをかけたいのですが、
img.Effect = 自作エフェクト;
とすると、画像が非常に大きいためスクロールが遅くなってしまいます。

scroll.Effect = 自作エフェクト;
とすると、スクロール自体は遅くならないのですが、バーの部分にまでエフェクトがかかってしまいます。

画像にだけエフェクトをかけるよい方法はありますか?

395 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 23:03:31.01 ]
>>394
<ScrollViewer.Resources>
&nbsp; <Style TargetType="{x:Type ScrollContentPresenter}">
&nbsp; &nbsp; <Setter Property="Effect">
&nbsp; &nbsp; &nbsp; <Setter.Value>
&nbsp; &nbsp; &nbsp; &nbsp; <BlurEffect Radius="9"/>
こんな感じでScrollContentPresenterにエフェクト掛けるとか

396 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 23:03:53.91 ]
>>391
普通はVMでもとのデータから表示用に変換した物にバインドするだろ

397 名前:デフォルトの名無しさん [2013/02/26(火) 23:35:35.14 ]
>>393
検討してみます

>>396
Model → ViewModel → View となっていて、

ModelにDataGridの列用のプロパティA・B・Cがあったら、ViewModelにもそれをラップしたのプロパティA・B・Cを作り、
ItemSourceにはViewModel内のList(もしくはObservalCollectionとか)を用意するわけですか?

398 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 23:40:57.89 ]
>>395
ありがとうございます
試してみましたが、画像にかけたときと同じくらいの重さで駄目でした

399 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 12:09:12.08 ]
>>389
なくてもあまり困らないから・・・なき駕する。

400 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 14:08:31.39 ]
WPFでも別に無くても困らないよ
ただWPFの本来の使い方というのは少しWinFormsに比べてフレームワーク色が強く、
そこを理解する前に一部の声のでかい連中によってWPF=MVVMなどという刷り込みがなされてしまっている



401 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 14:10:19.48 ]
つまり本来の使い方とは違う使い方で使おうとしているから変なフレームワークが必要になるってことだ

402 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 14:20:50.49 ]
MVVMは要らない

403 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 14:25:18.76 ]
MVVMが要らないプログラムってのは、まずWinFormsを検討するべき

404 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 14:46:08.90 ]
MVVMが有効で無いってのはお絵描きアプリとかの特殊な物しか無いだろ。
お絵描きアプリにしてもUIとデータ構造がより密接に関係してくるだけで本質的にはMVVMが有効。
それが出来ないのは無能だからだろ

405 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 14:49:54.84 ]
MVVMは大衆に受け入れられないと思う

406 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 16:07:09.48 ]
有効はいいから実践的でおおーっていうソースを示してくれませんかねぇ
見たことがない。これがベストだ!この方法以外にない!っていう説得力があるソース

ソースって記事とかじゃないよ

407 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 17:31:13.20 ]
MVVMにしないでユニットテスタブルにするいい方法あるなら教えてくれ(´・ω・`)
それがMVPでもMVCでもいいけどXAMLならMVVMじゃねーの

408 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 17:34:21.03 ]
XAMLには極力何も書かないのがいい

409 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 18:36:52.61 ]
MVVMだけでなんでもできたら普及するんだがなぁ

410 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 20:20:13.99 ]
winformsでMVVMをやったらいいんじゃない



411 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 20:39:56.31 ]
Behavior、Action、添付ビヘイビア。色々と足りなすぎる。
色々な追加機能があれば十分な機能とユニットテスタブルを両立できるが、
そこに辿り着くまでが長すぎる。辿り着けば有効ではあるが、できるのは1割もいない。
結局はMVVMで作ってマウスぽちぽちユニットテストしている奴が多いw

412 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 20:50:17.16 ]
そんなスゲーなら標準ですべて機能提供しろよアホカ

413 名前:デフォルトの名無しさん [2013/02/28(木) 00:20:01.29 ]
MVVMとは離れてしまうかもしれませんが・・・

同期処理で、Windows.showDiaglogで表示した別ウィンドウが閉じられてから処理を動かす方法ってわかりますか?

414 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 00:25:36.58 ]
ShowDialogの次の行に書け

415 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 00:36:53.53 ]
>>413
Messengerパターンとかじゃなくて?

>>414
容赦ないなw

416 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 00:55:17.17 ]
>>414
すいません、それで解決しました・・・
なんかWinformの知識でしたね・・・

>>415
深読みさせてしまいすいません

417 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 21:26:29.72 ]
jqueryみたいなダイアログを出したいんだけど、なんか( ・∀・)イイ!!方法ない?

418 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 21:28:26.67 ]
jQueryにダイアログなんかねえよ
何のプラグインか言え

419 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 21:29:29.44 ]
jqueryみたいなってjQueryUIとか?jQueryとだけ言われてもな

420 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 21:29:55.95 ]
おっとリロードすべきだった



421 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 21:31:04.36 ]
webで表現できてXAMLにできないデザインなんかなさそうだが

422 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 22:14:54.98 ]
jQueryUIでした。
モーダルダイアログっぽいけど、親ウィンドウの操作(移動、最小化とか)は出来る感じです

423 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 10:21:39.64 ]
カスタムコントロール化すればいいだけじゃね

424 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 18:04:58.86 ]
モーダルダイアログを出しておいて、裏の画面の移動とかできるようにするにはどうすればいいのでしょうか?

425 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 18:14:35.00 ]
モーダルダイアログに裏の画面を移動させるボタンをつける

426 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 19:40:38.45 ]
モーダルの意味が解ってないようだねw

427 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 19:42:18.18 ]
というかダイアログを出してる間は裏の処理を止めたいんです

428 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 19:43:43.42 ]
結局おまえは何をやりたいんだと

429 名前:デフォルトの名無しさん [2013/03/02(土) 19:44:21.64 ]
>>427
モーダルダイアログに裏の処理を止めるボタンをつける

430 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 19:48:27.09 ]
意味が解らない

Hoge.Pause();
var result=○○.ShowDialog();
Hoge.Start();



431 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 19:55:07.62 ]
違うよ
モーダルダイアログって出してる間は出し元の処理って止まるじゃん
それをモーダルダイアログを出さないで、実装したいんです

432 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 19:56:49.21 ]
質問者すり替わった?

433 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 21:15:35.96 ]
お前はダイアログ出したいのか出したくないのかまずはっきりさせろ

434 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 21:40:55.77 ]
通常のモーダルダイアログは出したくない
jQueryUIのダイアログみたいな感じのダイアログを出したい
jQueryUIのダイアログみたいな感じのダイアログはユーザーコントロールとして作成しましたが、
こいつを出してる間にモーダルダイアログを出している時のように裏の処理を止めたい

こういうことです

435 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 22:00:03.29 ]
そこまではOKだ
次に、裏の処理とは具体的に何か

436 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 22:04:44.03 ]
モーダルダイアログを表示したあとは、そのダイアログが閉じられない限り、ShowDialogの下に処理が流れませんよね
あれを実現したいのです。

437 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 22:16:37.68 ]
ダイアログでいいじゃん(´・ω・`) 

438 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 22:17:57.06 ]
モードレスダイアログにしてClosedに

Window.Closed += (s,e)=>{
後処理
};

とか書いとけばええんでない

439 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 22:24:33.93 ]
見た目の問題ならウィンドウの枠消せばいいだけじゃないの
webページみたいにウィンドウ内で疑似的にダイアログっぽいものを表示したいってことか?
あれはウィンドウの要素ツリーを弄って強引に実装する
ウィンドウの最前面にサイズ無限大の半透明Canvasを表示してイベントを妨害し、
その上にダイアログっぽいコントロールを置く
SilverlightのChildWindowはそうやってた

440 名前:439 mailto:sage [2013/03/02(土) 22:29:58.11 ]
ところでSilverlightのChildWindowは親ウィンドウの構造に依存しないで表示する必要があるから
動的にCanvasを追加したりしてるけど、ダイアログもどきを表示する前提で親ウィンドウも含めて設計するなら
親ウィンドウの最前面にダイアログを表示するためのレイヤを最初から仕込んでおいて
ダイアログを表示するときまで隠しとけばいい



441 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 22:32:35.11 ]
>>438
そうするしかないんですかね
見づらくなるのはしょうがないか

>>439
そんな感じで実装しました
タブで後ろのコントロールにフォーカスが移ってしまうのを制御するのが面倒でした

442 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 22:35:43.31 ]
>>441
フォーカスは親のコンテンツをまとめたパネルのIsEnabledをFalseにするだけでできるでしょ

443 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 22:36:25.34 ]
>>442
なるほど!
あなた、頭いいですね

444 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 22:41:54.82 ]
あ?

445 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 22:50:28.75 ]
よせよ、解決したんなら平和に終わろうぜ

446 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 23:09:48.37 ]
IsEnabled変えたら見た目も変わっちゃうじゃないか

447 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 23:17:02.95 ]
むしろ変えないと不親切だろわかりにくい
ついでにアニメーションで暗くすればかっこいいしもっとわかりやすい

448 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 23:48:11.90 ]
よく理解してないけど
Window.ShowDialog()でいいんじゃないの?

449 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 23:53:08.58 ]
じゃあ喋るな

450 名前:デフォルトの名無しさん [2013/03/02(土) 23:57:25.97 ]
VB.NET/XAMLでDictionaryの要素をバインドしようとしてますが、うまくいきません

XAML上では次の様に記述してます
ItemsSource="{Binding バインドしたいDictionary[key文字列]}"

これで実行するとバックグラウンドでBindingが失敗してる旨のメッセージが表示されます
XAMLでDictionaryのValueをバインドするのはこの方法でいいんでしょうか?
その方法でいけますよって書かれてるページ(StackOverflowの投稿)があって、それ見ながらやってみたら出来ないので困ってます



451 名前:デフォルトの名無しさん mailto:sage [2013/03/02(土) 23:58:15.07 ]
いや、行けません

452 名前:450 [2013/03/03(日) 00:01:27.26 ]
>>451
いけませんか
正しい記述を教えていただけると助かります

453 名前:デフォルトの名無しさん mailto:sage [2013/03/03(日) 00:48:20.23 ]
ItemsSource=new binding(ムニャムニャ)

454 名前:450 [2013/03/03(日) 00:58:28.56 ]
>>453
ありがとうございます、コードビハインドでの方法も試しましたが駄目でした
ItemsSourceに直接ぶちこむならいけるんですけどね・・・
一応コレクションの参照が変わる事は無いのでそれでもいいっちゃいいんですが・・・
解決したいのでもうちょい調べてみます

455 名前:450 [2013/03/03(日) 01:08:55.22 ]
解決しました
原因はDataContextでした
今回のComboはDataGridColumnHeader内に組み込んだコンボなんですが
ルート要素のDataContextに持たせていたのでスコープは通ると思ってたんですが
DataGridがDataGridColumnHeaderのDataContextを勝手にGridで上書きしていた為
スコープが通らなくなってました
とりあえずComboBoxに直接DataContextを改めてコードビハインドで与えてみると、解決しました
>>453さんのヒントでコードビハインドに目を向けた事で一気に事が進みました
ありがとうございます

456 名前:デフォルトの名無しさん mailto:sage [2013/03/03(日) 20:31:43.20 ]
ちょっと断片的なんだけど、これを見てくれ
pastebin.com/Pc37Gj16

以下のエラーが出る
・CLR 名前空間が定義されていません。'clr-namespace' URI が参照している名前空間 'System.ComponentModel' が見つかりません。
・型 'scm:SortDescription' が見つかりませんでした。アセンブリ参照が失われていないか、また、すべての参照アセンブリがビルドされているかどうかを確認してください。

しかしオブジェクトブラウザやソリューションエクスプローラ見る限り参照されてるし
デザイナの表示にしろ実行時にしろ問題は何もない(ちゃんとソートされたCollectionViewになっている)

でもエラーが消えないのは腹が立つので
どうにかして消せないだろうか

457 名前:デフォルトの名無しさん mailto:sage [2013/03/03(日) 20:35:04.51 ]
すまぬVS2012のバグらしい
connect.microsoft.com/VisualStudio/feedback/details/758384/vs-2012-wpf-xaml-sortdescription-does-not-exist

直るまでは無視することにする

458 名前:デフォルトの名無しさん mailto:sage [2013/03/03(日) 20:43:09.67 ]
またピンポイントに妙なバグだな
イミフ

459 名前:デフォルトの名無しさん mailto:sage [2013/03/04(月) 00:55:31.70 ]
名前:デフォルトの名無しさん[sage] 投稿日:2012/10/31(水) 17:13:25.24
C#の自動プロパティはViewとコードの分離のためだし
全部をコードビハインドで書いてる人には価値が分からないだろうな

460 名前:デフォルトの名無しさん [2013/03/05(火) 00:23:33.89 ]
いくつかのWindowsで全く似たような機能をもたせる場合(たとえばファイル選択ダイアログとか)、
VMを細切れにして、委譲させたりして、再利用させるのって普通なんですかね?



461 名前:デフォルトの名無しさん mailto:sage [2013/03/05(火) 00:26:02.57 ]
そういうのはMVVMの外でやる
インターフェイスでIoCやれ

462 名前:デフォルトの名無しさん mailto:sage [2013/03/05(火) 10:02:13.34 ]
然り然り






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<95KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef