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> <local:TextBox2nd x:Name="_textBox2"/> <Button Content="Set" Click="Button_Click_1"/> </StackPanel> Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs) _textBox2.DateValue = DateTime.Now End Sub 最小限の構成で試してみたら?
207 名前:206 mailto:sage [2013/02/09(土) 12:31:12.87 ] あ、スペースを に変換して書き込んでしまった。削除して読み替えて。
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の行の参照変数ですら取れないんですが•••
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> <Style TargetType="{x:Type ScrollContentPresenter}"> <Setter Property="Effect"> <Setter.Value> <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 ] 然り然り