[表示 : 全て 最新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 ]
テキストボックスを継承したカスタムコントロール作ったんだけど、おいても何も表示されない
どういうことですか?








[ 続きを読む ] / [ 携帯版 ]

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

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