2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2010/08/22(日) 21:11:53
一向に普及しないユーザーインターフェースシステム
Windows Presentation Frameworkについて語るスレ。
パワフルで柔軟すぎるのが敗因か? 正直ついていけないよね…。

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

関連スレ
Microsoft Silverlight その6
ttp://pc12.2ch.net/test/read.cgi/tech/1271580489/

過去スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part6
http://hibari.2ch.net/test/read.cgi/tech/1274423236/
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1245384489/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1231506876/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
ttp://pc11.2ch.net/test/read.cgi/tech/1211453941/
【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
ttp://pc11.2ch.net/test/read.cgi/tech/1162950198/

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

2 :デフォルトの名無しさん:2010/08/22(日) 22:08:37


3 :デフォルトの名無しさん:2010/08/24(火) 01:40:56
>>1


4 :デフォルトの名無しさん:2010/08/27(金) 21:46:28
チェックボックスとボタンがあって、チェックボックスの値(true false)によって
ボタンのコマンドを変えたい場合、ボタンのコマンドをチェックボックスの値にバインドして
booleanからICommandへのConverterを書くしか方法はないでしょうか?

Styleのtriggerのpropertyはターゲット自身のプロパティしか参照できないですよね??



5 :デフォルトの名無しさん:2010/08/28(土) 01:17:36
>>4
TriggerはTargetName=チェックボックスのName、Property=IsChecked、Value=Falseを指定する。
SetterのTargetName=ボタンのName、Property=IsEnabled、Value=Falseを指定する。

6 :デフォルトの名無しさん:2010/08/28(土) 14:14:23
無理やり埋めるのは美しくない

7 :デフォルトの名無しさん:2010/08/28(土) 17:51:30
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究

8 :デフォルトの名無しさん:2010/08/31(火) 22:50:42
WPFToolkitの.NET4版はいつリリースされるのかと。

9 :デフォルトの名無しさん:2010/08/31(火) 22:55:16
忘れた頃にだろうな
忘れてたけど

10 :デフォルトの名無しさん:2010/09/01(水) 22:15:42
Expressionスレがないから聞くが
Expression3→4へ無償UPGキャンペーンってまだやってんの?

11 :デフォルトの名無しさん:2010/09/01(水) 22:41:57
Expression3インスコPCにW体験版入れれば製品版になるから
実質永久にキャンペーン中

12 :デフォルトの名無しさん:2010/09/01(水) 22:49:20
終了したとは聞いてないからやってるんじゃね

13 :デフォルトの名無しさん:2010/09/01(水) 23:07:49
>>11 >>12 ありがとね

14 :デフォルトの名無しさん:2010/09/03(金) 15:06:37
>>11

キャンペーンのこと知らなくて、体験版入れたら何時まで経っても使用期限が来ないもんで
登録情報見たら登録済みになっててびっくらこいたよ。
もしかして落とせるようになってたの体験版じゃなくて正規版??とか一瞬ドキドキしたw

Expressionの3とは別にインストールされるみたいだけど、3はアンインスコしちゃって
いいのかねえ???

15 :デフォルトの名無しさん:2010/09/03(金) 16:11:21
どうなんだろうね
入れっぱなしだけど…

16 :デフォルトの名無しさん:2010/09/05(日) 19:22:49
ListBoxItem を RenderTransform.RotateTransform で回転させても
ListBox の外枠でクリッピングされてしまいますが、これをはみ出させる方法はありますでしょうか?

とりあえず、ListBox と ListBoxItem の ClipToBounds = false にしてみましたが、
これではだめなようです。

17 :デフォルトの名無しさん:2010/09/05(日) 20:32:31
ListBoxItemでは多分無理
スクロールバー表示のため制御されてる

18 :16:2010/09/07(火) 09:15:51
レスありがとうございました。
難しそうなんであきらめることにします。

19 :デフォルトの名無しさん:2010/09/07(火) 21:50:55
UserControl を作ってその中に ScrollViewer を入れました。
で、UserControl で、
<UserControl.InputBindings>
 <KeyBinding Key="Left" Command="HogeHoge" />
</UserControl.InputBindings>
としたんですが、ScrollViewer にキー入力をとられてしまい、
HogeHoge が発生しません。

UserControl で先にイベントを取得する方法はないでしょうか?
(PreviewKeyDown イベントを使う方法だと、KeyBinding が使えなくなって
しまうので、それ以外の方法でお願いします。)

20 :デフォルトの名無しさん:2010/09/10(金) 04:05:20
VS2010のプロパティで、"共通"のカテゴリに表示させる方法がわからねえ。
[Category("共通")] 以外あったら教えてくれ。

21 :デフォルトの名無しさん:2010/09/10(金) 11:37:14
[Category("Common")]

22 :デフォルトの名無しさん:2010/09/11(土) 20:01:19
Windowを常に最背面に表示する方法はありますか?
今はttp://gurizuri0505.halfmoon.jp/develop/csharp/zorderの方法を試してみたのですが、
最背面どころか画面が消えて見えなくなってしまいます。

23 :デフォルトの名無しさん:2010/09/12(日) 09:34:54
<TreeView x:Name="treeView">
<TreeViewItem Header="aa">
<TreeViewItem Header="bb">
<TreeViewItem Header="cc" />
</TreeViewItem>
</TreeViewItem>
<TreeView.Resources>
<Style TargetType="TreeViewItem">
<EventSetter Event="MouseDoubleClick" Handler="ItemClick" />
</Style>
</TreeView.Resources>
</TreeView>

これだとダブルクリックイベントが複数回発生するんだけどどうすればいいの?

24 :デフォルトの名無しさん:2010/09/12(日) 10:09:45
>>22
ActivatedイベントでWin32APIのSetWindowPos関数使ってHWND_BOTTOMにセットするとか
一瞬アクティブになったりもするけど

>>23
e.Sourceで判断する

25 :デフォルトの名無しさん:2010/09/12(日) 10:13:53
>MouseDoubleClick イベント ハンドラーで Handled プロパティを true に設定すると
>ルート上のその後の MouseDoubleClick イベントは、Handled が false に設定された状態で発生します。

>コントロール作成者がマウスのダブルクリックを処理する場合は、
>ClickCount が 2 に等しいMouseLeftButtonDown イベントを使用する必要があります。
>これにより、要素ツリー内の別の要素がそのイベントを処理する場合に、Handled の状態が適切に伝播されます。

うわ面倒くさ

26 :23:2010/09/12(日) 10:32:23
>>24
もうすこしくやしくお願いします

27 :デフォルトの名無しさん:2010/09/12(日) 10:36:42
複数回イベントが起こるのはしょうがないから
senderで判別しろってことだろ

下位の層でイベントを拾ったら上の層を無視するようにする

28 :23:2010/09/12(日) 10:43:42
出来ました
ありがとうございました

29 :デフォルトの名無しさん:2010/09/12(日) 11:25:18
>>24
自分のやりたい事は壁紙を変更する事だと気づき、最背面はあまり関係ありませんでした。
でも、壁紙変更もWin32APIで出来る事がわかりました。
あまりWPF関係ないですね。ありがとうございました。

30 :デフォルトの名無しさん:2010/09/13(月) 02:25:12
iPhoneのようなササッと横に流れてUIが切り替わるようなカッチョいいアプリを作りたいんだけど、
ウィンドウ内で画面遷移させるのってWPFだとどうやるの?
UIをそれぞれリソースにしてContent = FindResource("...")とやれば一応動作はするんだけど、
これだとそれぞれのUIにコードビハインド付けられないし使いにくい。
PageはWeb用みたいなかんじだし、UserControlでまとめるのもなんか違う気がする。

31 :デフォルトの名無しさん:2010/09/13(月) 04:25:18
カッチョいいwwwwwwww

32 :30:2010/09/13(月) 10:50:35
どうやらResourceDictionaryにコードビハインド付けられるみたいね。
それぞれのUIはこれで作ってMainWindowに統合する形でやってみます。ども

33 :デフォルトの名無しさん:2010/09/13(月) 13:22:27
LabelってIsMouseOverみたいなプロパティないの?

34 :デフォルトの名無しさん:2010/09/13(月) 13:36:04
普通にあるがな
http://msdn.microsoft.com/ja-jp/library/ms611061.aspx

35 :デフォルトの名無しさん:2010/09/13(月) 21:16:35
>>32
普通にUserControlだろ
リソースディクショナリにコードビハインドとかどう考えてもおかしい

36 :デフォルトの名無しさん:2010/09/14(火) 00:11:17
Grid の中に TextBlock をいれると、Grid の幅いっぱいに広がります。
テキストを表示するのに必要な幅を知りたいので、
これをよこいっぱいに広がらず WinForms の AutoSize = true の
ような状態にしたいのですが、そのような設定ができるプロパティ
とかありますか?

現在は、StackPanerl(Orientation = Horizontal)の中にいれて
横幅いっぱいまでひろがらないようにしていますが、
そのためだけに StackPanerl を使うのは無駄なような気がして、
なにか方法あるんじゃないかと思ってるんですが。

37 :デフォルトの名無しさん:2010/09/14(火) 00:16:54
>>35
たしかにデザイナも使えないしやめたほうがいいかも
それでやってみます

38 :デフォルトの名無しさん:2010/09/14(火) 00:20:05
>>36
HorizontalAlignment/VerticalAlignment?

39 :36:2010/09/14(火) 00:52:41
できました。
HorizontalAlignment プロパティは知ってましたが、WinForms と同じで
TextBlock 内で Text をどこに表示するかという意味だとばかり思ってました。

HorizontalAlignent でコントロール自体の大きさが変わるとは・・・。
勉強になりました。ありがとうございました。

40 :デフォルトの名無しさん:2010/09/14(火) 00:59:56
> TextBlock 内で Text をどこに表示するか
TextBlockにはないけど子要素をどう配置するかはHorizontalContentAlignment
HorizontalAlignmentは親要素に対し自分をどう配置するか

41 :デフォルトの名無しさん:2010/09/14(火) 02:19:51
クラスはカスタムコントロールで作ってスタイルはリソースディクショナリ。
コントロールが複数ならgeneric.xamlでマージする。

42 :デフォルトの名無しさん:2010/09/14(火) 12:59:41
WPFのカスタムコントロール(≠ユーザーコントロール)作るの難しすぎ
特にテンプレートのサポート
中は泥臭くていいからコンポーネントの利用者には完璧なAPIを提供しろっていう
いかにもMSらしい思想を感じる

43 :デフォルトの名無しさん:2010/09/14(火) 13:25:56
オーバーライドではなく、根っこから記述すれだから、公開されている
テンプレートになかったら、自力で書くしかないね。

しかし XAML 使い出すと、フォームはもう使うことないわ。古臭すぎる。

44 :デフォルトの名無しさん:2010/09/14(火) 13:36:37
データ仮想化サポートされないかなー

45 :デフォルトの名無しさん:2010/09/16(木) 01:48:18
要素が現在画面に表示されてるかどうかを知る方法ってありますか?

46 :デフォルトの名無しさん:2010/09/16(木) 01:51:51
ヒットテスト
http://msdn.microsoft.com/ja-jp/library/ms752097.aspx

泥臭いよなー
マジどうにかしてほしい

47 :デフォルトの名無しさん:2010/09/16(木) 01:56:34
ヒットテスト
ttp://gun.world.coocan.jp/guns/shooting_re/031205hdd.htm

48 :デフォルトの名無しさん:2010/09/20(月) 03:50:29
BulletDecoratorのBulletってFrameworkElementFactoryで指定できないんだろうか?

49 :デフォルトの名無しさん:2010/09/22(水) 00:58:44
WPFで文字の縁取りってどうやればいいの?
TextBlock オブジェクトをたくさん作ってずらせば出来そうだけど
もっとスマートな方法あるよね。

50 :デフォルトの名無しさん:2010/09/22(水) 01:25:24
>>49
FormattedTextのBuildGeometryを縁取りをつけて描画。
http://msdn.microsoft.com/en-us/library/ms745816.aspx

小さめの文字ではあまり見栄えが良くないので使いどころに困る。
Effectでお茶を濁したほうが楽だろうなぁと思う。

51 :デフォルトの名無しさん:2010/09/22(水) 01:30:50
>>50
神だわ、マジサンクス!

52 :デフォルトの名無しさん:2010/09/22(水) 02:00:26
リサイズ中ではなくリサイズ後(マウス離したタイミング)で発生するイベントってないんだろうか

53 :デフォルトの名無しさん:2010/09/22(水) 02:12:20
メッセージフックしてWM_EXITSIZEMOVE捕まえれば?

54 :デフォルトの名無しさん:2010/09/22(水) 02:43:00
>>53
できた、ありがとう

55 :デフォルトの名無しさん:2010/09/22(水) 23:34:42
不正な入力のチェックは、MVVMではどこでやるんでしょう?

・ViewModelでチェック
・ModelをIDataErrorInfoの具象にしてModelで値のチェック
・ValidatesOnExceptionで入力値の型をチェックさせることもできたり
・BindingのValidationRuleでチェックさせることができたり
・ViewのDependencyPropertyにValidateCallbackでもチェックできたり
・ViewのDependencyPropertyにCoerceValueCallbackを登録すれば
 (チェックではありませんが)入力値自体を正常範囲に丸めたり、不正な入力を蹴ったりできたり

と、色々な箇所にチェックを入れれるようで、どれをどういう場合に使えばいいのやらサッパリで…

56 :デフォルトの名無しさん:2010/09/22(水) 23:57:53
多く見るのは VM に IDataErrorInfo 実装 + ValidatesOnDataErrors だけど、
HasError とかに何を入れるかよね。

モデルに投げちゃう方式だと、モデルが WCF サービスでウェブ越しとかな時に困りそう。

最近多いのは、VM のプロパティに DataAnntations の検証属性つけて、
HasError とかの中では Validator.ValidateObject/ValidateProperty するだけとかかな。

O/R マッパーのエンティティクラスの方と2度手間になったりするんで、
T4 とか使ったコード生成で対処してる人もちらほら。

57 :デフォルトの名無しさん:2010/09/23(木) 12:38:05
ttp://www.atmarkit.co.jp/fdotnet/basics/xaml01/xaml01_02.html
上記のサイトを参考にwin.xaml実行したのですが、xpcom.dllがないってエラー表示されます
ブラウザはgoogle chromeを既定に設定してます。
xamlを動かすには何かランタイムが必要なのでしょうか?
net flamework4.0はインストール済みです

58 :デフォルトの名無しさん:2010/09/23(木) 14:47:05
Chromeでは動かない。
ググってみたらFireFoxをインストールしてパスを通せばChromeで動くようになるらしいけど
そんなんで動いても意味ないでしょ。配布先にそんなことさせるの?
XBAPなんて完全に見捨てられた技術だからブラウザで動かしたかったらSilverlight使うべき。

59 :デフォルトの名無しさん:2010/09/23(木) 14:57:09
それマジで行ってんの?今週勉強したばかりの俺はどうしたらいいんだ

60 :58:2010/09/23(木) 14:58:14
質問の意図を勘違いしてた。
LooseXAMLといって、.NETが入ってればIEで直接開けるものもあるんだけど、
一般にはXAMLはそれ単体では動かない。VSでビルドしてアプリケーションに組み込まれて初めて動くようになる。
>>57の情報は古いのでこっち参考に
http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_index/index.html

61 :デフォルトの名無しさん:2010/09/25(土) 21:35:45
ListViewのGridViewな行選択スタイルをListBoxで使おうと考えているのだが、これってやる方法あるのだろうか。

62 :デフォルトの名無しさん:2010/09/25(土) 21:50:40
意味が分からんのだがListBoxItemのDataTempleteに
StackPanelをOrientation=Horizontalにして使うんじゃ駄目なのか?

63 :デフォルトの名無しさん:2010/09/25(土) 21:57:15
Styleだから選択色半透明にしたいとかそういうんでねえの。

64 :デフォルトの名無しさん:2010/09/25(土) 22:01:45
じゃあこの辺か?
http://msdn.microsoft.com/ja-jp/library/ms750821.aspx

65 :デフォルトの名無しさん:2010/09/27(月) 23:43:16
WPFスレが伸びないのは使いにくいからですか?

66 :デフォルトの名無しさん:2010/09/27(月) 23:56:25
頭でっかちの人たちがつくったもんだからごちゃごちゃしすぎちゃって頭悪い人たちがついていけませんでした

67 :デフォルトの名無しさん:2010/09/28(火) 00:00:21
でもWPFの表現力には期待してるよ

68 :デフォルトの名無しさん:2010/09/28(火) 00:10:59
表現力なんかどうでもいいからバインディングをどんどん強化してくれ

69 :デフォルトの名無しさん:2010/09/28(火) 01:06:13
まあ、新技術の浸透なんて5年10年余裕でかかる。

70 :デフォルトの名無しさん:2010/09/28(火) 01:37:15
5年後に数字が+5されてないことを祈るわ

71 :デフォルトの名無しさん:2010/09/28(火) 02:03:20
>>65
新しいってだけで思考停止しちゃう>>66みたいな第2のコボラーが荒らしに来るから普段は離れてROMってる。

72 :デフォルトの名無しさん:2010/09/28(火) 08:10:13
表現力はともかく、アーキテクチャがぐちゃぐちゃで実装がきたなすぎて分かりに
くい。コントロールのイベントやプロパティも覚えきれないほどたくさんあるけ
ど、肝心なところが「え!こんなこともできないの?」と抜けてることもあるし。リ
フレクションの多用で型の安全性が大きく損なわれてるのも. net frameworkの元々の
思想から大きく逸脱してる。

73 :デフォルトの名無しさん:2010/09/28(火) 09:02:39
IEでは特に設定しなくても動作するが、FireFoxの場合サーバー側でMIMEの設定が必要になる。
IE以外でローカルで動かす方法は知らない。
LooseXAML: .xaml application/xaml+xml
XBAP: .xbap application/x-ms-xbap
Click Once: .application application/x-ms-application
Chromeもこれで動いていた記憶があるが今は環境がないので試せない。

silverlightでは不要なのでブラウザ上でいろいろやりたい場合はこっちのほうがいいかな。


74 :デフォルトの名無しさん:2010/09/28(火) 09:21:51
Silverlight(2 以降)の登場後、それでも XBAP 使ってる人ってほとんど見たことないけども。
MIME の設定は、Silverlight の XAP に対しても必要よ。

75 :デフォルトの名無しさん:2010/09/28(火) 09:42:06
>>74
xapはプラグインがダウンロードするからMIMEの設定は不要。
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
 <param name="source" value="xxxxx.xap"/>

MIMEの登録は間違って開かないようにとか、
他のアプリに使われないようにといった意味しかないと思う。

76 :デフォルトの名無しさん:2010/09/28(火) 14:18:20
MSDNの資料でWPFを使う前にSilverlightを検討してみてくださいって言われてた

77 :デフォルトの名無しさん:2010/09/28(火) 23:57:45
酷いw

デスクトップでいいものならやっぱフル版の .NET の方が楽なんだけどもねぇ。

78 :デフォルトの名無しさん:2010/09/29(水) 03:23:29
>>68
強化されて乱用されると複数のバインディングの動作順次第で処理結果が変わるなんて
トラブルが多発しそうで面倒見れないから
バインディングやxamlの処理を直接デバッグできるようにするとかを強化して欲しいなぁ。

79 :デフォルトの名無しさん:2010/09/29(水) 12:41:11
>>78
デバッグは本当に困るね。なんとかならないのかな。

80 :デフォルトの名無しさん:2010/09/29(水) 13:10:17
バインディングは鬼門

使ったらだめ

81 :デフォルトの名無しさん:2010/09/29(水) 14:13:10
ところでいい加減テキストボックス系コントロールは透過できるようになりましたか

82 :デフォルトの名無しさん:2010/09/29(水) 14:23:40
初めからできてたと思うが?

83 :デフォルトの名無しさん:2010/09/29(水) 18:09:57
そういう時代錯誤も甚だしい変な制限を一掃するためにWPFが生まれたんだが

84 :デフォルトの名無しさん:2010/09/29(水) 20:00:19
WPFはWindowsサーバでしか動かせませんでしたっけ?
SilverlightはLinuxサーバでも動かせるんでしたっけ?

85 :デフォルトの名無しさん:2010/09/29(水) 20:11:41
>>84
バカは死んでください。

86 :デフォルトの名無しさん:2010/09/29(水) 22:22:21
UIとロジックが分離できるのが長所らしいけど、それぞれが複雑化、冗長化している。
たしかに作業が分担になるかもしれないが、これでは、
『分担しなければ作れない』
になってしまうではないか・・・
個人でプログラム書くには向いてないねこれ。

87 :デフォルトの名無しさん:2010/09/29(水) 22:24:07
そーかね
俺はもうFormsには戻りたくない

88 :デフォルトの名無しさん:2010/09/29(水) 22:29:46
俺も。HTML感覚で構築できるのは良い。

89 :デフォルトの名無しさん:2010/09/29(水) 22:33:45
【IT】台湾のマイクロソフトのサイトが激萌えで凄い! 日本がまさかの敗北
http://kamome.2ch.net/test/read.cgi/newsplus/1285742248/

90 :デフォルトの名無しさん:2010/09/29(水) 23:17:26
でもコードだけでオブジェクト作れるじゃん


91 :デフォルトの名無しさん:2010/09/29(水) 23:19:26
Viewをいじるのがだるすぎる
ガワ作るのは楽しいけど、ほんとそれだけ

92 :デフォルトの名無しさん:2010/09/29(水) 23:31:54
WPFはインフラ整備がクソ過ぎる
.NET5にはようやく…

93 :デフォルトの名無しさん:2010/09/30(木) 16:56:50
Listboxで選択されているアイテムを再度クリックした時に選択解除させたいのですが、どうすればいいのでしょうか?

94 :デフォルトの名無しさん:2010/09/30(木) 17:10:16
SelectionMode=Multiple?

95 :デフォルトの名無しさん:2010/09/30(木) 17:17:06
複数選択はさせたくないのです…

96 :デフォルトの名無しさん:2010/09/30(木) 17:23:24
ItemsControl.ItemContainerGeneratorのメソッド使えばインデックス取れるよ
そこから選択変更できるはず

97 :デフォルトの名無しさん:2010/09/30(木) 17:43:03
>>96
すみません、ListboxのItemContainerGeneratorのメゾットを使用して、
既に選択されている項目がクリックされたときに反応する方法がわからないのですが、どうすればいいのでしょうか?

98 :デフォルトの名無しさん:2010/09/30(木) 17:46:51
>>97
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.listboxitem_events.aspx
>MouseDown


少しは検索しろよチンカス

99 :デフォルトの名無しさん:2010/09/30(木) 17:51:40
>>98
優しすぎて泣いた
ありがとん

100 :デフォルトの名無しさん:2010/09/30(木) 18:33:00
unregisterReceiver 忘れると SynchronousQueue#put が deadlock するとは…


101 :100:2010/09/30(木) 18:33:42
ごめん!お隣のタブと間違えた

102 :デフォルトの名無しさん:2010/09/30(木) 18:37:33
いえいえ

103 :デフォルトの名無しさん:2010/10/02(土) 10:12:31
メゾットにだれも反応しない件について

104 :デフォルトの名無しさん:2010/10/03(日) 01:27:24
もう察したからいいんだよ

105 :デフォルトの名無しさん:2010/10/03(日) 01:40:31
インストロールと同じぐらい使い古されてるからなぁ

106 :デフォルトの名無しさん:2010/10/03(日) 02:06:45
「インストロール手順を教えてください」とメールを送ると
「インスコール手順は以下の通りです」と平気で返ってくるなんてよくあること

107 :デフォルトの名無しさん:2010/10/03(日) 08:32:53
メゾットの作り方

1. タマネギはみじん切りにして、オリーブオイル、無塩バター40gで炒める。
2. タマネギが透き通ってきたら、米を入れて中火でさらに炒める。
3. 2に白ワインを加えて強火で煮、沸騰してきたら中火にする。水分がなくなるまで煮詰める。
4. 最初、米がかぶるくらいの分量の水をくわえ、グツグツくらいの火加減で煮る。
  メゾットの表面の泡が少し粘った感じになったら最初の時よりやや少な目の水をくわえ、同様に煮る。
5. 繰り返し水をくわえて好みのかたさに仕上げる。好みのかたさに近くなったら、塩小1/2を加えて煮詰める。
6. 5にすりおろしたパルメジャーノを加え、フライパンを揺すりながら混ぜる。仕上げに無塩バター40gを加えて、バターが溶けたら皿に盛る。

108 :デフォルトの名無しさん:2010/10/03(日) 08:33:32
リゾット・ネエロ

109 :デフォルトの名無しさん:2010/10/03(日) 09:04:45
それリセットだから

110 :デフォルトの名無しさん:2010/10/06(水) 22:50:17
ViewModelにBindした添付プロパティを他の添付プロパティにBindって不味いんでしょうか?

・ViewModelのプロパティをViewの添付プロパティAにBind、
・添付プロパティAを、別な添付プロパティBにコンバータ経由でBind、
として添付プロパティAを書き換えた所、
ViewModelのプロパティおよび添付プロパティAは値が変化したのですが
添付プロパティBは値が変化していないようです(添付プロパティBの変更通知どころかコンバータすら呼ばれないようです)。

しかし以下の場合は2つのケースは動きました。
・ViewModelのプロパティを直接添付プロパティBにコンバータ経由でBind
・ViewModelのプロパティを添付プロパティAにBindせずに初期値をセット。
 その状態で添付プロパティAを別な添付プロパティBにコンバータ経由でBind

なんか動いたり動かなかったり…条件がよく分かりません。

111 :デフォルトの名無しさん:2010/10/06(水) 23:10:51
>>110
別にそんなことないな

112 :デフォルトの名無しさん:2010/10/06(水) 23:25:42
どこかコンバートの途中で出てる例外が、WPFのフレームワーク側で握りつぶされてて見えないだけとかは?

113 :デフォルトの名無しさん:2010/10/06(水) 23:41:23
ありがとうございます。

>>111
ですか…うーん。関係なさそうなコードをだいぶ削っても起きているので、
なにか根本的に間違えているのかもしれません。もうちょっと調べてみます。
>>112
出力ウィンドウを見てもそれらしいものはないので、それは大丈夫そうです。

114 :デフォルトの名無しさん:2010/10/07(木) 01:54:48
>>110
両方のBindのコンバーターにブレイクポイントを置いてデバッグしてみたら?

115 :デフォルトの名無しさん:2010/10/07(木) 23:31:13
>>110です。すみません、そもそもBindできていませんでした。
添付プロパティAを持つコントロールを渡して
そのコントロールの添付プロパティAを添付プロパティBにバインドしているつもりが、
添付プロパティAを持つコントロールがContentControlに入っていました。

お騒がせしました。

116 :デフォルトの名無しさん:2010/10/07(木) 23:42:32
おっちょこちょいだなあ…

しーね(^皿^)

117 :デフォルトの名無しさん:2010/10/07(木) 23:43:34
 ∧||∧
(  ⌒ ヽ
 ∪  ノ
  ∪∪
遺書
 おっちょこちょいで面目ない

118 :デフォルトの名無しさん:2010/10/07(木) 23:47:19
Expression4のアップグレード版はVS2010のExpress版も対象に含まれてるよね?
MSのページにはExpressを除くというような表現はないけど、Amazonのページだと
「※無料のダウンロード製品および体験版は対象外。」と書いてあってどっちだか
わからん。

119 :デフォルトの名無しさん:2010/10/11(月) 19:13:53
DataGridのCanUserAddRowプロパティをデザイナから変更してもチェックが変わらないのは、バグなのでしょうか。

120 :デフォルトの名無しさん:2010/10/11(月) 21:10:19
WPF
前から興味があって、今日ちょびっと勉強したのでこのスレを開いてみたら
1のやる気の無いコメントで泣いた ('A`)

121 :デフォルトの名無しさん:2010/10/11(月) 21:23:08
大丈夫、技術なんてそういうもんだから。
いまだのコボルが現役なんだぜ。

例え WPF 自体が下火になろうとも、知識は Silverlight に流用できるし。

122 :デフォルトの名無しさん:2010/10/11(月) 22:10:53
前スレは3ヶ月で潰したのにこのスレ2ヶ月で120レスしかないお( ^ω^)

123 :デフォルトの名無しさん:2010/10/11(月) 22:35:23
XAMLの優秀なデザインソフトが無料で提供されれば、
個人レベルのとこからじわじわと着実に広まると思うんだけどな
現状だと一部のオタクがブログでこんなんできたみたいな単発ネタ出してるだけにすぎない

124 :デフォルトの名無しさん:2010/10/11(月) 22:52:33
それはすいませんねえ!

125 :デフォルトの名無しさん:2010/10/12(火) 00:02:57
>>123
GridとStackPanelあたりを使って配置していくと
XAMLを書きながらプレビュー表示しているだけという感じになって
デザイナソフトとかどうでも良くなってきたよ。
後はMarginやPaddingなどをリソースに設定しておくと
誰が作っても同じような綺麗に揃ったレイアウトになるのでなかなか楽でいいよ。

126 :デフォルトの名無しさん:2010/10/12(火) 00:07:00
ChildWindowの外観と同じものをXAML手書きで作れる?

127 :デフォルトの名無しさん:2010/10/12(火) 00:25:41
>>125 はプログラマー的感覚、>>123 は Flash とか使って UI 作ってる視覚デザイナー的感覚なのかな。


128 :デフォルトの名無しさん:2010/10/12(火) 00:30:21
大まかには手書きで作れるけど、細かい視覚効果は死ねる

129 :デフォルトの名無しさん:2010/10/12(火) 00:38:22
Formsのデザインを模倣するだけなら簡単
しかしWPFで求められてることをやろうとするのは大変だ

130 :デフォルトの名無しさん:2010/10/12(火) 00:38:22
アニメーションとか直書きでなんかやってられない

131 :デフォルトの名無しさん:2010/10/12(火) 00:38:45
VisualStateManagerなんか完全に人間が扱うものじゃなくなってるからな

132 :デフォルトの名無しさん:2010/10/12(火) 00:43:03
グラデーション一つ作るのも大変
VS2010はグラデーションエディタ使えるけど相変わらずスタイルやリソースには対応してないから使い物にならない

133 :デフォルトの名無しさん:2010/10/12(火) 00:43:18
でも実際のところ、そんな凝った視覚効果が求めらてるかというと・・・
データ検証とか、検証通るまでボタン押せなくするとかやりやすいだけでも WPF の価値あると思うんだけども。

で、せっかく開発者とデザイナーの協業想定されてるんだから、
細かい視覚効果が本当に必要になったときにデザイナーさんに UI 修正をお願いするとかがいいと思う。

134 :デフォルトの名無しさん:2010/10/12(火) 00:53:15
WinForms程度でいいんだったら尚更XAML手書きは要らないと思う
VS2010のXAMLデザイナの使い勝手はWinFormsとそんなに変わらなくなった

135 :デフォルトの名無しさん:2010/10/12(火) 01:03:58
本当に必要な細かい視覚効果なんてないとおもうんだ

136 :デフォルトの名無しさん:2010/10/12(火) 01:05:58
>>135
うん、特に業務だと皆無だと思う。
なので、そういうところよりは分業とかMVVMでのモデル分離とかの方がWPFの利点かなぁと思う。

まあ、コンシューマー系だと無意味に思える装飾も目を引きたいって意味合いで使えるけども。

137 :デフォルトの名無しさん:2010/10/12(火) 03:52:58
結局デザイン面においてもWinFormsで十分ってことか

138 :デフォルトの名無しさん:2010/10/12(火) 04:07:10
見飽きた流れだ

139 :デフォルトの名無しさん:2010/10/12(火) 10:57:15
使ってて楽しいアプリつーもんを目指していかなあかんのですわ

140 :デフォルトの名無しさん:2010/10/12(火) 17:09:19
>>133
データの検証とかコントロールのオンオフ制御とかは正直wpf関係ないじゃん。wpf
のそれは複雑で、かつ分かりにくすぎる。いかにもmsらしい、無意味にいやらしい
アーキテクチャだよな。へジタンの目指した世界がもうめちゃくちゃだよ。

141 :デフォルトの名無しさん:2010/10/12(火) 17:45:46
わかってないのお前だけじゃね?
ついてこれないならそろそろ辞める事を考えないとね、君はさ

142 :デフォルトの名無しさん:2010/10/12(火) 18:33:16
カスタムコントロールに使う要素の機能を拡張したいってときの実装方法はどうすればいい?
例えば時間を指定するコントロールを作るとして、
時、分、秒それぞれにTextBoxを用意する。
フォーカスを得るとそのTextBoxが全選択状態になるようにTextBoxに機能を追加するとして、
添付ビヘイビアを使うか、TextBoxを継承したコントロールを用意するか、他には何かある?

143 :デフォルトの名無しさん:2010/10/12(火) 18:45:08
普通にコードビハインドで書けばいいよ。
DateTimeを指定するだけのコントロールだろ?
単なるビューの部品なんだからMVVMみたいなのを適用するのは不適切。

144 :デフォルトの名無しさん:2010/10/12(火) 19:28:27
ユーザーコントロールじゃなくてカスタムコントロールだったら、コントロールテンプレートが差し替えられるから
添付ビヘイビアなんか使えないよ。TextBoxを継承したコントロールを使うのも、
テンプレートに制約ができてしまうから良くない。

145 :デフォルトの名無しさん:2010/10/13(水) 14:35:27
試してみたけどカスタムテンプレートでもビヘイビア使えたよ。
<TextBox local:TextBoxBehaviors.IsFocusSelect="True" Text="{Binding Hour}"/>
てな感じで使える。
TemplatePart属性使ってコントロールのコード内でやるのもお手軽でいいと思ったけど、
ビヘイビアだとロジックを分離できて、ユーザーから見ても機能の取捨がより簡単にできるし
自由度も上がるんじゃないかと思う。

146 :デフォルトの名無しさん:2010/10/16(土) 03:40:04
>>141
>>140じゃないが、それでお前は、
説明をほとんど読まずに、いろんなことを即実装出来てきたのか?
「なぜいちいちこんなダラダラした書式で書かねばいかんのか」
「なぜこんなことがこんな奥まった位置にあるのか、回りくどい取り付け方をしなくてはいかんのか」
そういう疑念が湧く事など全くないわけだろう。

小物のアプリ一つ動かせたらうれしくて、
「俺ってすごいプログラマ!そしてこれはすばらしい開発システムだ!すごい!」「3流プログラマはろくに動かすことさえできねえんだろうな!」
そういうレベルの話をしているんじゃない。

あるアプリを作るのに、凡庸プログラマならスパゲッティで5万行、そこそこなら1万行、超優秀な設計とコードを書ける人間ならすっきり明瞭高速拡張性大の3千行。
wpfのシステムは、それそのものが2番目程度のものだと(一歩譲っても2.5番目の6千行)、多くの人間が感じているわけよ。

147 :デフォルトの名無しさん:2010/10/16(土) 09:53:43
このスレにも痛い奴が来るとはねぇ
要はWPFもメジャーになったって事か

148 :デフォルトの名無しさん:2010/10/16(土) 10:18:40
自分の考えが正解と思ってる
まだまだ入り口君なんだよ

149 :デフォルトの名無しさん:2010/10/16(土) 10:21:03
所詮は受注アプリプログラマのレベルだろw

150 :デフォルトの名無しさん:2010/10/16(土) 10:56:41
受注アプリプログラマ・・・なんだよそれ?

151 :デフォルトの名無しさん:2010/10/16(土) 11:26:33
まあ、今もう、わかってる人はみんなコード生成でやってるからねぇ。

とにかく、データの定義を一か所に集めたいのよ。
データ定義から、Entity Framework の Entity とか、
WPF 向けの ViewModel とか、
あるいは、DataGrid とか DataForm の列定義/フィールド定義を生成してる。

ViewModel に IDataErrorInfo とか INotifyDataErrorInfo 付けてのデータ検証、
そういうやり方には結構あってると思うけどね。

152 :デフォルトの名無しさん:2010/10/17(日) 02:46:12
WPFはプログラミングとは言えない代物
真のプログラマーは使わない

153 :デフォルトの名無しさん:2010/10/17(日) 03:50:32
真のプログラマーは何を使うん?

154 :デフォルトの名無しさん:2010/10/17(日) 05:35:16
OS/370とFortranかな

155 :デフォルトの名無しさん:2010/10/17(日) 06:36:06
それって例のギャグだろ

156 :デフォルトの名無しさん:2010/10/17(日) 11:10:29
だね、ギャグ。

プログラム書いて自動化すれば(最初だけちょっと大変だけど以後)数秒で終わる作業を、
Excel 手作業とかで延々と何時間もやってるおっちゃんっているじゃない。
刺身タンポポ的作業。

そこでいう「真のプログラマ」ーって刺身タンポポと大差ないよね。

157 :デフォルトの名無しさん:2010/10/17(日) 14:52:27
刺身タンポポって何?

158 :デフォルトの名無しさん:2010/10/17(日) 15:09:25
         ____
       /      \
     /  _ノ  ヽ、_  \
    /  o゚⌒   ⌒゚o  \  今日もまた、刺身の上にタンポポのせる仕事が始まるお…
    |     (__人__)    |
    \     ` ⌒´     /

159 :デフォルトの名無しさん:2010/10/17(日) 15:50:11
あれは手作業じゃないですよ

160 :デフォルトの名無しさん:2010/10/17(日) 16:10:04
だからギャグなんだって。
今時工場ライン化されてるはずの作業を手作業でやってるもんだっていう。

161 :デフォルトの名無しさん:2010/10/17(日) 16:51:08
また街路樹の落ち葉を掃除する仕事が始まるお…

162 :デフォルトの名無しさん:2010/10/17(日) 17:00:10
あれは食べるものじゃないですよ

163 :デフォルトの名無しさん:2010/10/17(日) 17:45:53
また街路樹の銀杏を取り合う仕事が始まるお…

164 :デフォルトの名無しさん:2010/10/17(日) 18:48:58
くせーから早く持ってってくれ

165 :デフォルトの名無しさん:2010/10/17(日) 21:30:24
WPFは何でも部品としてバラして改造できる柔軟性の高さ故に手間がかかる。
人によっては刺身タンポポに見えるが、人によっては銀の弾丸に見える。

俺にはほぼ刺身タンポポに見えるけどねw


166 :デフォルトの名無しさん:2010/10/17(日) 21:32:16
俺にはジグソーパズルだな

167 :デフォルトの名無しさん:2010/10/17(日) 21:35:53
何でもバラせるからって、
別にバラさなきゃいけない訳じゃないし。そのまま使えばOK。

168 :デフォルトの名無しさん:2010/10/17(日) 21:43:37
俺にはダイヤの原石に見えるね

169 :デフォルトの名無しさん:2010/10/17(日) 21:45:11
>>165
まあ、ツールの利用とかコード生成とかが前提よ。
それが WPF 刺身タンポポを回避する方法。

170 :デフォルトの名無しさん:2010/10/18(月) 11:48:50
WindowStyleをNoneにして最大化するとフルスクリーン?になるんだけど
どうすればタスクバーが隠れないようにできるの?

171 :デフォルトの名無しさん:2010/10/18(月) 20:35:34
WindowsStyleをNoneにしなければできるの

172 :デフォルトの名無しさん:2010/10/18(月) 23:34:33
>>119
ItemsSourceにデフォルトコンストラクタがある型の追加可能なコレクションを設定しないと有効にならない。
デザイナ上は判りにくい動きになるが一応値はセット出来てるはずだよ。

173 :デフォルトの名無しさん:2010/10/19(火) 01:19:14
完璧なのはSCCSだけ、だがな。

174 :デフォルトの名無しさん:2010/10/20(水) 19:47:50
標準で追加されたDataGridって痒いトコに手が届かねぇんだな。
MVVM推奨するならDoubleClickやSelectionChanged用のCommandプロパティぐらい用意しとけよと。

175 :デフォルトの名無しさん:2010/10/20(水) 19:55:12
WPFはSilverlightのデスクトップ用互換環境に成り下がったからな
Silverlightのダイエット志向に合わせてる

176 :デフォルトの名無しさん:2010/10/20(水) 22:03:56
>>174
ダブルクリックは普通に InputBindings でいけない?
まあ、Blend SDK 入れて、そっちのトリガー使えば何でもコマンドをバインドできる。
.NET 5 では標準入りするんじゃないかなぁ。

177 :デフォルトの名無しさん:2010/10/20(水) 22:15:59
ASPのGridよりはマシ

178 :デフォルトの名無しさん:2010/10/20(水) 23:58:30
>>176
.NET5とか、それまでWPFの息があるかどうか…Orz

179 :デフォルトの名無しさん:2010/10/21(木) 01:20:44
ListBoxのアイテムにコンテキストメニューをつけそこから削除させようと思ったら、
コンテキストメニューから操作した場合はそれが動くけど
DELキーの場合はListBox自体のキーバインドが先に動くという微妙な結果に。さてどうしたものか。

部品がどのRoutedCommandを出してどのCommandBindingsが登録されているかってMSDNに書いていないよね?

180 :デフォルトの名無しさん:2010/10/23(土) 17:51:15
RichTextBoxのTextChangedイベントでDocument書き換えるとエラー吐くのは仕様ですか?

181 :デフォルトの名無しさん:2010/10/23(土) 19:17:24
FocusChangedイベント中にフォーカスを書き換えると書き戻されたり、
そのあたりはいろいろと仕様です。

182 :デフォルトの名無しさん:2010/10/24(日) 02:16:47
MSもAppleを見習って、WPFで作ったアプリしか受け付けないMS Storeを作って販売すればいいのに。
そうすれば、一挙に普及する。


183 :デフォルトの名無しさん:2010/10/24(日) 02:30:33
そういう商売はやめてほしい

184 :デフォルトの名無しさん:2010/10/24(日) 16:10:21
Silverlight&XNAなら普通にやりそう

185 :デフォルトの名無しさん:2010/10/24(日) 17:46:28
Silverlightなら違う方向で普及を目指してる気がするけど……。
http://www.microsoft.com/taiwan/silverlight/

186 :デフォルトの名無しさん:2010/10/24(日) 21:48:02
日本でもやるべきだよな

187 :デフォルトの名無しさん:2010/10/24(日) 22:31:29
日本は公式がやらなくても有志がかってにやってくれる萌え先進国だからな

188 :デフォルトの名無しさん:2010/10/24(日) 22:56:15
>>185
ほんと、何やってんだかな・・・

まあ、画像は全部保存したけど

189 :デフォルトの名無しさん:2010/10/24(日) 23:22:32
その有志達
ttp://www.pixiv.net/search.php?word=silverlight&s_mode=s_tag

190 :デフォルトの名無しさん:2010/10/24(日) 23:50:02
声優にオフィシャルにしてくれと言われても、いろいろあってとしか言えない日本。
いろいろあるだろうにやっちまう台湾。
日本のマイクロソフトは情けない。

191 :デフォルトの名無しさん:2010/10/25(月) 00:55:36
>>190
だな。

192 :デフォルトの名無しさん:2010/10/25(月) 08:43:55
中国本土と台湾の温度差はすごいなw

193 :デフォルトの名無しさん:2010/10/25(月) 09:37:11
独立を公式に認められてないだけで別の国だしね。

194 :デフォルトの名無しさん:2010/10/25(月) 16:17:20
WPF上のコンボに対して、
コードからRoutingEventを一律Addするのってどうするの?
以下のコードでは追加できね。

this.AddHandler(ComboBox.SelectedEvent, new RoutedEventHandler(Combobox_SelectionChanged));

ボタンのクリックイベントならAddできるのに、コンボにAddできない理由がわからん・・・

195 :デフォルトの名無しさん:2010/10/25(月) 17:45:58
カスタムコントロールでXamlから
<Button Click="CustomControl1.Button_Click"/>
みたいな感じでコード側にあるハンドラと関連付けることってできないの?
コマンド用意するには大げさなときとか、こんなふうに手軽にかければいいんだけど。
どんな些細な操作でもコマンド使うのがカスタムコントロールの流儀なのかね。

196 :デフォルトの名無しさん:2010/10/25(月) 18:11:10
FindForm()みたいな、ルート要素を探すメソッドか方法ありませんか。
ユーザーコントロールのどこかから親Windowを捜すにはどうしたらいいんでしょうか。

197 :デフォルトの名無しさん:2010/10/25(月) 18:17:15
ぐぐれよw

198 :デフォルトの名無しさん:2010/10/25(月) 18:29:44
Window.GetWindow()

これか!
Windowの方のstaticかー

199 :194:2010/10/25(月) 18:29:55
>> 195

Xaml記述ではできるんだけど、タイミングを制御したいのでコードで書きたいのです。

>>196

Window.GetWindow(control)

200 :デフォルトの名無しさん:2010/10/25(月) 19:59:38
>>199
>>195>>194とは無関係よ。紛らわしくてすまん

201 :デフォルトの名無しさん:2010/10/26(火) 05:23:32
webbrowserコントロールで一部のjavascriptが動きません。
javascriptの動作はボタンを押すとデータをPOSTするといったもののようなのですが
他のブラウザだとPOSTされたあと画面が切り替わるのに、
webbrowserコントロールでは切り替わりません。
FiddlerでモニタしたところPOST自体はされているみたいです。
WPFでもFormでもどちらも動かないのですが、どうすれば動くようになるでしょうか?

202 :デフォルトの名無しさん:2010/10/26(火) 06:03:59
IEで試した?
IEコアを使ってるからIEで動かない物は動かないよ

jsやcssはブラウザ作ってるところ毎で「ぼくのじっそうさいきょう」
やってるから差がある

203 :デフォルトの名無しさん:2010/10/26(火) 07:37:36
もちろんIEでも試しました
動かないのは
<a href="javascript:void(0);" onclick="hogehoge();">fugafuga</a>
こういう感じのコードです。

204 :デフォルトの名無しさん:2010/10/26(火) 07:38:59
ナビゲートしてないとか



205 :デフォルトの名無しさん:2010/10/26(火) 08:51:23
ナビゲートしてないというのはどういうことでしょうか?

206 :デフォルトの名無しさん:2010/10/26(火) 09:03:57
>>205
動かす予定のjsとかってどういうメソッド使って渡してるの?

207 :デフォルトの名無しさん:2010/10/26(火) 09:18:07
javascriptはよくわからないのですが
同じページにあるformをsubmitしてPOSTしてるようです

208 :デフォルトの名無しさん:2010/10/26(火) 14:18:57
将来的な c++ + winapi 辺りへの移植を考えたら.net止まりにせざるをえない

209 :デフォルトの名無しさん:2010/10/27(水) 11:03:57
ttp://blog.evernote.com/jp/?p=1150

Evernote 4は今までのEvernote 3.5とは全く違います。Evernote 3.5
もたくさんの良い機能を持っていましたが、どうしてもそのままでは直
せない問題がありました。ぼやけたフォント、起動時間の長さ、起動時のメ
モ リー使用量、特定のグラフィックカードとの相性の悪さ等の問題は3.5
が使っているWindows .netとWPFのためになかなか改善する事ができ
ませんでした。皆様がよりEvernoteを便利に使って頂けるような新機能を
追加する前に、改善作業ばかりに追われていました。

なので、もっと早く動く、信頼できるC++で最初から作り直す決心をし
ました。使って頂くと分かると思いますが、すばらしい出来映えになりました。こ
の新しいバージョンがこれから新しい機能などを追加していく基盤になります。

210 :デフォルトの名無しさん:2010/10/27(水) 14:44:30
C++でサクサク作れる人はすごいね。

211 :デフォルトの名無しさん:2010/10/27(水) 14:49:51
BASIC、アセンブラ、C、C++、JAVA、C#とかの系譜をこなしてきたなら簡単に出来るべ?
Java以前はリンカのためのヘッダがたまにうざったいとおもうがな。


212 :デフォルトの名無しさん:2010/10/27(水) 14:56:04
突っ込む場所が違うんじゃないかw
要はWPF使えない宣言されたってわけだ

213 :デフォルトの名無しさん:2010/10/27(水) 15:31:21
あのフォント問題を長期間放置しておいたのは罪深い

214 :デフォルトの名無しさん:2010/10/27(水) 16:16:32
さっさとSilverlightに吸収統合されてほしい

215 :デフォルトの名無しさん:2010/10/27(水) 20:46:35
この流れは止まらないだろうなー
WPF\(^o^)/

216 :デフォルトの名無しさん:2010/10/27(水) 20:51:46
原文は、「私たちが知ってて、信頼を置いていたC++」みたいな感じなのよね。
要は、Evernote 開発者が C++ な人なんで、慣れない WPF で書いて失敗した感じ。

それがなんか日本語特有の主語抜きに翻訳されちゃってて、
全面的に C++ が信頼置けるみたいな文章になっちゃってる。

217 :デフォルトの名無しさん:2010/10/27(水) 21:55:14
WPFがC++で.NETに関わらない形で使えるようにしてくれれば面白い。

218 :デフォルトの名無しさん:2010/10/27(水) 21:57:40
WPFの他にDirectXを使ったGUIフレームワークってないの?

219 :デフォルトの名無しさん:2010/10/27(水) 22:17:03
>>217
つSilverlight+ActiveX
WPF自体マネージコードで書かれてるので.NETに関わらないWPFというのはありえない

220 :デフォルトの名無しさん:2010/10/27(水) 22:36:30
ActiveX使うSilverlightって意味なくないか

221 :デフォルトの名無しさん:2010/10/27(水) 22:38:41
SilverlightはActiveXコントロール。
だからウィンドウに貼ってCOMでホスティングしてやればGUIフロントエンドとして使える。

222 :デフォルトの名無しさん:2010/10/27(水) 22:44:27
エバーノートのスレ見てきたらみんな早いとか喜んでてワロタ
WPF捨ててお客様満足度アップだなw

223 :デフォルトの名無しさん:2010/10/27(水) 22:56:53
まあ、XP で WPF の起動がもっさりなのも事実だし、
Evernote 的に、.NET 使うのがモチベーション上がらなかったんだろうなぁってのもあるだろうけど。

ユーザビリティ的に劣化してる部分もあって、twitterとかではそれをたたかれてたりもするが。
結局、信者はいい1点だけ見て喜び、アンチは悪い1点だけ見てけなす。

224 :デフォルトの名無しさん:2010/10/27(水) 23:09:01
WPF活かすようなナイスなGUIにしてなかったんだったらそもそもWPF使わなくてよかったんだろうし、
使う必要がったなら、自前か代わりの何かを持ってこないとならない。

まぁWPFが微妙にうんこなのは同意。

225 :デフォルトの名無しさん:2010/10/28(木) 20:00:12
Windows環境でWPF以外のGUI開発の選択肢ってどういったものがあるの?
Formはイマサラ感あるし、QtとかWTLとか?

226 :デフォルトの名無しさん:2010/10/28(木) 20:31:41
javax.swing

227 :デフォルトの名無しさん:2010/10/28(木) 21:16:36
もっとない

228 :デフォルトの名無しさん:2010/10/28(木) 21:43:54
.NET FrameworkはC#で書かれているとかそういうの要らんからネイティブで実装してほしかったな

△△は△△で〜みたいなのって誰得

229 :デフォルトの名無しさん:2010/10/28(木) 22:00:11
WPFが遅いのは別にC#で書かれてるせいじゃないだろ
バインディングとかゴテゴテの仕組みや描画のせいだから何で書いても一緒
SilverlightのGUIはほとんどネイティブだけどそんなに速くないっしょ

230 :デフォルトの名無しさん:2010/10/28(木) 22:10:53
描画?軽量だよ。
AtomのPCで動かしてもそこそこいけるしね。

231 :デフォルトの名無しさん:2010/10/28(木) 22:21:56
Silverlightはシンプルなレイアウトで描画面積が小さいと軽いけど
複雑になってくるとWPFとは比べ物にならないくらい重いよ
Silverlightはシンプルな使い方しかしないことが前提だから軽い

232 :デフォルトの名無しさん:2010/10/28(木) 23:30:28
WPFとかまだまだβ版じゃまいか。
WinForms+J2EE(WebOTX)が事実上トレンド。

233 :デフォルトの名無しさん:2010/10/28(木) 23:53:33
>J2EE
いや、それは無いだろう…

234 :デフォルトの名無しさん:2010/10/29(金) 00:17:40
J2EE使うならWin選択する理由がねえ

235 :デフォルトの名無しさん:2010/10/29(金) 01:43:16
>>230
WPF は CPU じゃなくて GPU 依存だしね。
あと、Vista か 7 なら軽い。

>>231
Silverlight は GPU の活用度合が低い感じが。
クロスプラットフォームだからある程度仕方がなく。

>>232
いつもの、「MS 製品は3世代目から」ジンクスに従えば、ようやく正式版。

236 :デフォルトの名無しさん:2010/10/29(金) 01:55:24
>>234
社会じゃ仕方なくWin縛りの案件ばかりなんだよ、僕。

237 :デフォルトの名無しさん:2010/10/29(金) 18:50:10
>>209
これのGUIって自作なのかな

238 :デフォルトの名無しさん:2010/10/29(金) 18:54:45
社外品だろ
早くなったのは起動だけ
他は、、まぁわかるよな

239 :sage:2010/10/29(金) 19:00:59
ビジネス用途での"Windows XP"シェアは全体の75%だからな、
さらに2014年まで使えるから、
あと2,3年はビジネス用途に絡むソフトにはWPFは鬼門かもしれんね

240 :デフォルトの名無しさん:2010/10/29(金) 19:11:55
EvernoteのおかげでWPFの普及がさらに遅れそうだな

241 :デフォルトの名無しさん:2010/10/29(金) 20:26:37
正直WPF使ってΣ( ゚Д゚) スッ、スゲー!!ってもんをみたことがない・・・
ほかのFWでもあまり見たことないがw

242 :デフォルトの名無しさん:2010/10/30(土) 07:23:20
cocoa売ってもらえばいいんだよなw
まあそれはなさそうだからwpf使うけど

243 :デフォルトの名無しさん:2010/10/30(土) 10:09:16
>>241
スゲー!と思わせてもどうせ2分で慣れる。
重要なのはWhat the fuckの少ない、驚き最小化の原則に乗った動作。
すなわちUIの良し悪しはフレームワークに依らない。

WPFを使うと微妙な挙動が多くてその実現に無駄に手間がかかるがなw

244 :デフォルトの名無しさん:2010/10/30(土) 10:16:58
>242
いや別にcocoaはいーやw

>243
いやLonghornのデモの時とかなんか色々すごいUIデモしてたような気がしたんだが…
まぁそれが使いやすいかどうかは別物だけど.

245 :デフォルトの名無しさん:2010/10/30(土) 10:26:36
単にすごければいいだけであれば、
ほとんどXAMLだけでアニメーションゴリゴリで動くものを作ることもできるさ。
限度を越えるとウザいだけだがなw

246 :デフォルトの名無しさん:2010/10/30(土) 11:56:12
Windows Media Center みたいな奴か。

247 :デフォルトの名無しさん:2010/10/31(日) 18:53:52
ひょっとしてWPFのWebBrowserってウンコ?

248 :デフォルトの名無しさん:2010/10/31(日) 18:59:51
ウンコもクソもIEコントロールホストしてラップしてるだけだもん
WPFのWebBrowserと呼ぶほどのものでもない

249 :デフォルトの名無しさん:2010/10/31(日) 22:17:37
>>247
WebBrowserだけでなくどれもがウンコだろが

250 :デフォルトの名無しさん:2010/10/31(日) 22:48:37
WebBrowserはWPFですらないのでTransformなども受け付けなくて残念だったんだよなぁ。

251 :デフォルトの名無しさん:2010/10/31(日) 22:56:36
NewWindowイベとStatusTextがホスィ

252 :デフォルトの名無しさん:2010/10/31(日) 23:23:45
SilverlightだとエフェクトかけたりできるのはもちろんWebBrowserBrushとかあるんだよな

253 :デフォルトの名無しさん:2010/11/01(月) 03:36:43
一方 firefox は Direct2D を選択した…!?

254 :デフォルトの名無しさん:2010/11/01(月) 09:01:54
WPFで開発するプログラムって具体的にどんなものが多いの?

255 :デフォルトの名無しさん:2010/11/01(月) 09:29:04
VC#2010Expr使ってて、WPFのプロパティウィンドウで値を変更しようとしたら、いつも勝手に日本語入力になるんだけど…

256 :デフォルトの名無しさん:2010/11/01(月) 12:58:36
【MS】Silverlight終了のお知らせ。今後はHTML5に注力。
ttp://hato.2ch.net/test/read.cgi/news/1288568171/

257 :デフォルトの名無しさん:2010/11/01(月) 13:07:16
WPFたん・・・orz

258 :デフォルトの名無しさん:2010/11/01(月) 13:33:46
ARPANET大勝利

259 :デフォルトの名無しさん:2010/11/01(月) 15:25:38
>>254
Visual Studio 2010 みたいなものです。

260 :デフォルトの名無しさん:2010/11/01(月) 16:47:18
WPFはまだ終わらんさ。Windowsアプリ開発の標準として揺ぎ無い地位を得るはずだ!はずだっ!

261 :デフォルトの名無しさん:2010/11/01(月) 17:16:42
wp7はsilverlightなんだし別に死亡じゃなくね?

262 :デフォルトの名無しさん:2010/11/01(月) 21:59:54
Windows Phone 自体が死んでいる

263 :デフォルトの名無しさん:2010/11/01(月) 22:03:56
WPF、Silverlightともに糸冬了
http://www.publickey1.jp/blog/10/html5silverlightwindows_phone_7.html

264 :デフォルトの名無しさん:2010/11/01(月) 22:06:32
3.5で作ったサンプルクラスのお手軽ソフトが4でビルドできない。

そして私はWPFを考えるのをやめた。

265 :デフォルトの名無しさん:2010/11/01(月) 22:08:34
次世代GUIまだ〜? (・∀・)

266 :デフォルトの名無しさん:2010/11/01(月) 22:27:17
Visual Studio 2012ではWPFのテンプレートは非標準。代わりにHTML5がメインとなりスマートクライアント時代も終息かと。

267 :デフォルトの名無しさん:2010/11/01(月) 22:30:45
ウソニュースだしな。

268 :デフォルトの名無しさん:2010/11/01(月) 23:00:06
>>264
それ4じゃなくて4 Client Profileとかじゃね?

269 :デフォルトの名無しさん:2010/11/01(月) 23:28:02
4 ⊃ 4 CP

270 :デフォルトの名無しさん:2010/11/01(月) 23:47:49
WinForm開発中止で、WPFを捨てたら…どこに行くんだよw

271 :デフォルトの名無しさん:2010/11/02(火) 00:11:57
WinFormsの方はそのまま4CPに移行成功した
WinForms安定だな
サクサク起動するようになったし侮れないな

272 :デフォルトの名無しさん:2010/11/02(火) 08:40:09
すると MDX2.0 returns がやってくるのか…

273 :デフォルトの名無しさん:2010/11/02(火) 15:45:51
>>264
どんだけ変な書き方してるんだよ


274 :デフォルトの名無しさん:2010/11/02(火) 15:58:45
どうせ非推奨APIを使用してて、コンパイルスイッチでエラーになる設定なんだろw

275 :デフォルトの名無しさん:2010/11/02(火) 20:18:17
// ResourceDictionary.xaml を作って、
<Style TargetType="Button" x:Key="abc">〜</Style>

// App全体に適用でおっけー、と App.xaml で
<Application.Resource>
 <ResourceDictionary Source="ResourceDictionary.xaml" />
</Application.Resource>

// しかし、UserControl.xaml 等からは見えてないわけで
<Button Style="{StaticResource abc}">〜</Button>

これが 「リソース "abc" を解決できません」 警告。
更に、このUserControlを使っているWindow.xamlでは
「"〜"のインスタンスを作成できません」エラー。
(デザイナを開かなければ起動できるし意図通り反映もされてる…)


今は各xaml全部に <ResourceDictionary Source="ResourceDictionary.xaml" /> と書いてますが
「App全体に適用でおっけー」を上手くやる方法はありますか。

276 :デフォルトの名無しさん:2010/11/02(火) 21:10:11
VSが古くない?

277 :デフォルトの名無しさん:2010/11/02(火) 21:36:53
>>275
同じことをしてみたけど、うちでは警告でなかったし、デザイナにも反映されたよ。

.NET Framework 4 Client Profile
Visual Studio 2010 Version 10.0.30319.1 RTMRel
+ Hotfix for Microsoft Visual Studio 2010 Professional - 日本語 (KB982218)

278 :デフォルトの名無しさん:2010/11/02(火) 21:54:05
ナンダッテー
VS2010Expressです。
ちょっと新しく作って最初から試してみます。

279 :デフォルトの名無しさん:2010/11/02(火) 22:14:57
わかった。
Srcフォルダを作って、そこにxamlとcsを全部入れてたんだけど、それだとダメみたい。
普通にプロジェクトフォルダ内なら大丈夫でした。
詳しいことはわかりませんが、参照の基準の場所?みたいのがあるんでしょうか。

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

280 :デフォルトの名無しさん:2010/11/02(火) 22:20:45
ResourceDirextory.xamlがプロジェクトに追加されてないんじゃ

281 :デフォルトの名無しさん:2010/11/02(火) 22:30:40
いやー、ソリューションエクスプローラーから
右クリック 追加 新しいフォルダー、ドラッグでどぼどぼ移動、
ってやったので、プロジェクトは大丈夫だとおもいまっす。
(プロジェクトから除外してみたら例外ですた)

282 :デフォルトの名無しさん:2010/11/02(火) 23:18:51
WPFのTextBoxコントロールって右クリックしたときになんか変なメニューでるね。
なんで今までと同じにしないのか理解できない。
IME使わない国には分からないのかな。

283 :デフォルトの名無しさん:2010/11/03(水) 00:09:46
OS依存のコンテキストメニューを、自前実装のWPFがわざわざエミュレートするようなことはしない。他のコントロールもそうだろ。

284 :デフォルトの名無しさん:2010/11/03(水) 00:12:39
Windows以外で誰が使うんだよ
夢見すぎだ
現実に戻ってこい

285 :デフォルトの名無しさん:2010/11/03(水) 00:45:22
とりあえず、APIつーかネイティブな場合、どのようにしてコンテキストメニューが表示されているか知れば答えがわかるよ。
それを知っていれば、君はおかしな事を言っていた事に気づくはず。

286 :デフォルトの名無しさん:2010/11/03(水) 01:01:33
技術面でこうだから出来ないというのは三流の言うこと。
ユーザーの実態に合わせないからWPFはこうなった。
どうやら未来もなさそうだ。

287 :デフォルトの名無しさん:2010/11/03(水) 01:13:21
やっべ、WPF作った人三流らしいぜ

288 :デフォルトの名無しさん:2010/11/03(水) 01:54:24
>>286
自分こそが三流だと思えないとこが三流の三流たる所以

289 :デフォルトの名無しさん:2010/11/03(水) 02:12:26
TextBox のデフォルトコンテキストメニューに何で「すべて選択」が無いんだろ?
Ctrl+A で「すべて選択」は出来るから、キーバインドはされている。
なんか理由があるのかな?

290 :デフォルトの名無しさん:2010/11/03(水) 02:22:58
>>289
一流の仕事なんだから間違いない。
三流は黙っとけ。

291 :デフォルトの名無しさん:2010/11/03(水) 02:31:02
>>286
自分でどうにかしたらいいじゃないか。
技術的に無理か?

292 :デフォルトの名無しさん:2010/11/03(水) 02:37:43
Linuxがなぜ一般家庭まで普及しなかったのかを感がる時期に来ているね。

293 :デフォルトの名無しさん:2010/11/03(水) 02:40:11
一般家庭レベルならしょうがないな

294 :デフォルトの名無しさん:2010/11/03(水) 02:55:58
WPFなんだからApplicationあたりのリソースに
TextBoxのスタイルのContextMenuに満足のいくContextMenuを設定しておけよ。
もともとTextBoxのメニューなんてあんまり統一されてなかったと思うよ。

295 :デフォルトの名無しさん:2010/11/03(水) 08:31:05
TreeViewのイベントが複数回発生するのは仕様ですか?

296 :デフォルトの名無しさん:2010/11/03(水) 09:13:31
仕様です

297 :デフォルトの名無しさん:2010/11/03(水) 13:00:29
一億総三流時代

298 :デフォルトの名無しさん:2010/11/03(水) 19:05:34
このスレにあったような。
あった >>23-28

299 :デフォルトの名無しさん:2010/11/04(木) 21:37:50
MainWindowから Showするのに時間のかかるSubWindowを
非同期で表示するにはどうしたらよいのか、お教えください。


private void button1_Click(object sender, RoutedEventArgs e)

  Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(ShowSub));
}

private void ShowSub()
{
  SubWindow sub = new SubWindow();
  Thread.Sleep(3000);

  sub.Show();
}

こんなコードで実行すると、実行完了まで、MainWindowの操作ができなくなってしまっています。
Dispatcherの使い方が間違っているんだろう…というくらいまでは分かるのですが
それ以上わからず手じまいになってしまっています。

300 :デフォルトの名無しさん:2010/11/04(木) 21:48:50
無理
SubWindowのロード処理が重いなら、とりあえず表示だけ済ませて
重いロード処理は非同期にするべき

301 :デフォルトの名無しさん:2010/11/04(木) 21:50:08
>>299
DispatcherにInvokeを送る=UIスレッドで実行する=時間のかかる処理はフリーズしてしまう
のです。
DispatcherPriorityを設定したからって違うスレッドで実行されるわけではないです。
フリーズしないようにするためには別のスレッドで実行するといい。
例えばThreadPool.QueueUserWorkItemとか。
でも、別のスレッドからだとUIスレッドのコントロールに触ると例外が出てしまう。
そこで使うのがDispatcher.BeginInvokeで、UIスレッドにメソッドを送りつけるわけです。

302 :デフォルトの名無しさん:2010/11/04(木) 21:52:12
あきらめてSplash Windowをだしてごまかすとか。
WPFは簡単に出来たはず。

303 :デフォルトの名無しさん:2010/11/04(木) 22:07:53
>>300-302

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

ThreadPool.QueueUserWorkItemでは STAスレッドではないということで
InvalidOperationExceptionが発生するということは
ググったり、自身で実行してみて理解していました。

自身に配置したコントロール(たとえばListBoxやTextBox)に対して
Dispatcher.BeginInvokeで非同期実行することはできていたので
Windowではなぜできないのか、悩んでおりました。

無理、という事が判明したのなら
アドバイス通り、スプラッシュやらプログレスの表示で回避するのが良策のようですね。


304 :デフォルトの名無しさん:2010/11/04(木) 22:33:40
>>303
非同期にやるっつったって、Dispatcher.Invoke の中で重たい処理しちゃいけないのはわかってる?

非同期開始
重たい処理
Dispatcher.Invoke
Window生成&Show

って順でやらないとダメ。

305 :デフォルトの名無しさん:2010/11/04(木) 22:57:39
ユーザーの文字入力でその文字のボタンを作成していくものを作ろうと思うのだけど
ボタンの作成はXAMLでするの?C#で記述するの?

306 :デフォルトの名無しさん:2010/11/04(木) 23:02:29
XAMLでスタイル書いといてC#でボタン作ってスタイル突っ込む

307 :デフォルトの名無しさん:2010/11/04(木) 23:08:55
WPFがもっとも苦手とする部分だな

308 :デフォルトの名無しさん:2010/11/04(木) 23:14:45
ボタンを追加?
データバインディングで Button.Content にテキストをバインドとかでなく?

動的に追加なら普通に C# で書くね。

309 :デフォルトの名無しさん:2010/11/04(木) 23:19:43
>>215
昔からそうだね

310 :デフォルトの名無しさん:2010/11/04(木) 23:22:54
>>306
スタイルとかよくわからないですがそれでやってみます

>>307
そうなんですか、まだXAMLでどこまでできるかよく把握していないので
ロジック分離するにも境界線がわかっていない感じです

>>308
動的なのかわかりませんが、ラップパネルにユーザーが文字を入力して作成ボタンを押すと
その文字が書かれたボタンが新しく追加されていくという感じです

311 :デフォルトの名無しさん:2010/11/04(木) 23:27:25
>>309は誤爆ですw

312 :デフォルトの名無しさん:2010/11/04(木) 23:29:05
>>310
そういう用途なら ↓こんな感じでやる。

XAML 側
<ItemsControl ItemsSource="{Binding List}">
  テンプレートで
  <Button Content="{Binding}" />

C# 側(どこかで DataContext 設定)
View.DataContext = new ViewModel();

C# 側(ViewModel クラスで)
class ViewModel
{
  public ObservableCollection<string> { get; set; }
}

313 :デフォルトの名無しさん:2010/11/04(木) 23:29:46
>>307
WPF で余裕。
データバインディングと ItemTemplate 強力。

314 :305:2010/11/04(木) 23:37:06
>>312
わざわざありがとうございます
覚えなければいけないことがいろいろあるようで
根気よくやってみます

315 :305:2010/11/05(金) 19:08:31
>>312
もう少しだけ細かく教えてもらえませんか?
ラップパネルにはItemsSourceもControlTemplateもないのですがどこのテンプレートですか?
それと作成ボタンが押されたらラップパネルにボタンが追加されるようにする方法もよくわかりません
Binding Listも何をバインディングしているのかもわかりませんでした
ViewModelクラスも何のために作成しているかわかりませんでした

一応こんな風にC#で作成ボタンのクリックイベントでボタンを作成するようにしてできましたが

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Button button1 = new Button();
            button1.Content = textBox1.Text;
            button1.Background = new SolidColorBrush(Colors.White);
            button1.Foreground = new SolidColorBrush(Colors.DarkGreen);
            this.wrapPanel1.Children.Add(button1);
         }

316 :デフォルトの名無しさん:2010/11/05(金) 19:38:02
> ラップパネルにはItemsSourceもControlTemplateもないのですがどこのテンプレートですか?
WrapPanelは直接じゃなくてItemsControlのItemsPanelTemplateとして使う
で、この場合のテンプレートはItemsControl.ItemTemplate

> それと作成ボタンが押されたらラップパネルにボタンが追加されるようにする方法もよくわかりません
考え方が違う

A. 自分でやること
・ItemsControl,ItemsControlにObservableCollectionをバインドしておく
・必要なときにObservableCollectionに文字列を追加する

B. 勝手にされること
・ObservableCollectionはデータが追加されたことをItemsControlに通知する
・ItemsControlは増えたデータをDataTemplateをもとに作り上げた要素(ボタン)を自分に追加する

317 :デフォルトの名無しさん:2010/11/05(金) 20:33:41
>>316
http://ufcpp.net/misc/WpfApplication5.zip

318 :305:2010/11/05(金) 21:07:11
>>316
>>317
わざわざ作って頂いてありがとうございます
でもデリゲートいっぱい、ソースみても何を書いているのかよくわかりませんでした
それと起動しても追加ボタンが灰色のままで押せないのですが

今の自分にはレベルが高すぎる上、なぜこうすべきかもわからないので>>315のやり方でとりあえず妥協します

319 :デフォルトの名無しさん:2010/11/05(金) 21:08:47
>>315
コード中でボタン作るのはともかく、コードにColor.DarkGreenとか出てくるのはちょっといただけない
せめてStyle使いましょう

320 :デフォルトの名無しさん:2010/11/05(金) 21:08:51
>>318
おいこらw、セッカクつくってもらったんだから妥協してんしゃねえよ。
つかてめえデリゲートごときでなにびびってんだコラ。

321 :デフォルトの名無しさん:2010/11/05(金) 21:10:37
はは、まぁ作った奴からすればちょっと悲しいよなw

322 :デフォルトの名無しさん:2010/11/05(金) 21:11:15
柄の悪いインタネッツですね

323 :デフォルトの名無しさん:2010/11/05(金) 21:11:27
デリケートは昔でいうgotoだから使う奴は初級者

324 :デフォルトの名無しさん:2010/11/05(金) 21:12:10
昔で言うgotoは例外ですよ

325 :305:2010/11/05(金) 21:23:47
>>319
本当はスタイルしたいんだけど
C# コードでのstyleを作る方法が見つからなかった
XAMLでのコードはあったけど
でも、C#側で作ったボタンにXAML側で作ったスタイルを適用する
方法もわからなかったので

>>320
デリゲートはずっと避けてきてそれでもwinformsならそれなりのツールが
作れていたので、まった無知です

326 :デフォルトの名無しさん:2010/11/05(金) 21:26:02
ParallelsとかTaskとかデリゲートだらけに進化してます

327 :デフォルトの名無しさん:2010/11/05(金) 21:26:54
>>318
データはビューから分離しとかないと、すぐに管理しきれなくなるよ。

ほんとにボタン足して終わりの単純なアプリなら >>315 で全然いいんだけど。


328 :デフォルトの名無しさん:2010/11/05(金) 21:29:33
>>325
リソースで Style 作っておいて、
C# 側からリソース読み出せばいい。

てか、デリゲート避けてきたって、そりゃかなり酷いぞ。
C 言語でポインターが理解できませんと同レベルにどうしようもない。

329 :デフォルトの名無しさん:2010/11/05(金) 21:30:30
わからなきゃ投げ出すとか、ほんとゆとりだな

330 :デフォルトの名無しさん:2010/11/05(金) 21:34:17
デレゲートとラムダ式の違いがよくわからんかったな

331 :デフォルトの名無しさん:2010/11/05(金) 21:38:18
デリゲートね
デリゲートを簡単に書くためにラムダ式が

332 :305:2010/11/05(金) 21:38:22
>>327
最終的には、追加されたボタンをクリックして色反転
DATAGRIDに並べられたファイルにボタン名(タグみたいな感じ)で関連付けして
xmlで書き出して保存までやりたいです




>>328
> >>325
> リソースで Style 作っておいて、
これはできます
> C# 側からリソース読み出せばいい。
これがわかりません

> てか、デリゲート避けてきたって、そりゃかなり酷いぞ。
> C 言語でポインターが理解できませんと同レベルにどうしようもない。
C言語の例えはよくわかりませんが、デリゲート知らなくても
それなりのソフトはできてました。使う必要がなかった感じです

>>329
投げ出して一生デリゲートを学ばないと言っているわけじゃないので
試行錯誤の過程を断片的に捉えて煽るのはやめてもらえませんかね?
あなたはすぐデリゲート理解できの?
とりあえず、完成まで持っていきたいから他のアプローチを試す
ゆとりというより柔軟と言ってほしい

333 :305:2010/11/05(金) 21:45:41
>>331
簡単に書くというより短く書くだけで
結局、デリゲートがどういうものか理解していないと
よりわかりにくくなっただけって感じ
ラムダ式がなかったころからデリゲートを使っていた人向けで
今から始めた人向けじゃない気がする

334 :デフォルトの名無しさん:2010/11/05(金) 21:47:12
そうだね
まあ最初はデリゲートを書きなれることかなw

335 :デフォルトの名無しさん:2010/11/05(金) 21:51:06
イベントには便利だな

336 :デフォルトの名無しさん:2010/11/05(金) 21:52:36
というかC#のイベントはデリゲートで実装してるんじゃないの?

337 :305:2010/11/05(金) 21:52:50
>>334
でも、使う場面がないですよ?
あらゆるサイトでデリゲートの説明していますが
デリゲートって便利だなと思ったものは1つもない

338 :デフォルトの名無しさん:2010/11/05(金) 21:54:59
おまえはイベントを書く時にどうやってるんだよ…

339 :デフォルトの名無しさん:2010/11/05(金) 21:55:37
いろんなとこから呼ばれる非同期処理とか

340 :デフォルトの名無しさん:2010/11/05(金) 21:56:08
>>337
スレッドとか使うときかなあ・・・

以前C#のほかのスレででてたサンプル
http://cs2ch.blog123.fc2.com/blog-entry-84.html

341 :デフォルトの名無しさん:2010/11/05(金) 21:57:22
>>337
コールバック処理とかの実装どうしてんだよ。
わざわざクラスこさえて実施するとかJava上がりのバカだけだろ。

342 :デフォルトの名無しさん:2010/11/05(金) 21:57:32
LINQにメソッド渡すのは嫌ずら

343 :305:2010/11/05(金) 21:57:46
>>336
そういうこと言い出す人がいると思いましたけど
わかってるでしょ?イベントハンドラは自動で作成されるし
別にデリゲートと意識しなくても使えるということを

動的にボタンを作成する場合も必要だけど
それぐらいはわかります。

とにかく>>317はボタン追加が押せないということで
間違っているところがあるんですよね?
それにあれだけ長くて難しいコードを書かなくてはいけない理由もわからない
ただ、ボタンを追加するだけなのに・・・
WPFやってみたけど、不満しかいまのところない
IDEは異常に重いし・・・ヒントの数も少ない
入力候補などが出ず手動で書かないといけないところが多い

344 :デフォルトの名無しさん:2010/11/05(金) 21:58:40
コレクションを要素の型の特定のプロパティでソートしたいときはデリゲート使わないでどうやるんだろう
Comparerクラスを実装するのはデリゲートと同じだから当然理解できないだろうな
データセットとか使うんだろうか

345 :305:2010/11/05(金) 21:59:22
>>339
>>340
>>341
そういうのをしたい、必要と思ったことはありません
その程度の小規模なツール作っているだけなんで

346 :デフォルトの名無しさん:2010/11/05(金) 21:59:29
ふーん
能力がないのを棚に上げて道具のせいとかついったーに書いてろよ

347 :305:2010/11/05(金) 22:00:18
>>344
そんなソートをしたいと思ったことがないですね

348 :デフォルトの名無しさん:2010/11/05(金) 22:01:00
>>345
理解できなくてすいませんでしたって土下座しろよ。
クソして寝ろ、もうくんなw

349 :デフォルトの名無しさん:2010/11/05(金) 22:01:12
>>345
じゃあ今は覚えなくていいよ
必要になったらここで見たな〜くらいは覚えておけば

350 :デフォルトの名無しさん:2010/11/05(金) 22:01:32
視野が狭い自慢?

351 :デフォルトの名無しさん:2010/11/05(金) 22:03:31
>>344
from n in コレクション
orderby n.プロパティ1,n.プロパティ2
select n

352 :デフォルトの名無しさん:2010/11/05(金) 22:03:51
他に出たのはともかくとして>>344がいらないって一体何作ってるんだろ
スクリプト言語でちょっとした処理書くときでさえ>>344みたいなソートは使わない方が珍しいくらい

353 :305:2010/11/05(金) 22:04:24
winformsで簡単で短いコードでできることを
WPFでは難しく長いコードになってしまうということですよ

354 :デフォルトの名無しさん:2010/11/05(金) 22:05:02
>>351
それデリゲート使ってるよ

355 :305:2010/11/05(金) 22:06:34
>>352
コレクションのソート使わない方が沢山あるでしょ

356 :デフォルトの名無しさん:2010/11/05(金) 22:07:07
ラムダ式はいわば簡単にかけるメソッドでしょ
デリゲートにおける扱いは普通のメソッドと変わらん。

357 :デフォルトの名無しさん:2010/11/05(金) 22:07:25
ソート使わないプログラムの方が少ないでよ
エントロピー減らすためにPC使ってるんだで

358 :デフォルトの名無しさん:2010/11/05(金) 22:09:05
>>355もういいから涙拭いて布団に入れよ。

359 :デフォルトの名無しさん:2010/11/05(金) 22:09:52
WinFormsの方が短く書けるってのはWinFormsの方法論でWPF書いてるからですよ
当たり前

360 :305:2010/11/05(金) 22:11:28
てか>>315の何がだめなの?
他の人も言ってたじゃない
追加するならC#で書くってさ

361 :デフォルトの名無しさん:2010/11/05(金) 22:11:35
俺は半分オナヌー用途だが

362 :デフォルトの名無しさん:2010/11/05(金) 22:12:02
ウィンホームズの方が他の言語に活かせる学び方ができる

363 :305:2010/11/05(金) 22:13:03
>>359
じゃあ>>317はなぜ長いか説明してよ
追加ボタン押せないのはなぜか教えてよ

364 :デフォルトの名無しさん:2010/11/05(金) 22:13:14
まあ、実際、値の変更通知を手動で管理しきれて、
ビューから状態分離しなくてもテストしきれるような小規模なら、
WinForms の方法論で全然問題ないんだけどもね。

それを超えることやってないなら WPF はオーバースペックか。

365 :デフォルトの名無しさん:2010/11/05(金) 22:13:34
>>327辺りが言ってると思うが
お前メクラなの?PCモニタ見るの止めれば?

366 :デフォルトの名無しさん:2010/11/05(金) 22:14:36
>>363
ああ、ボタン押せなくしたのはちょい蛇足。
テキスト入力されてないときに、空のテキスト追加しちゃうの?って思ったんで。

ああいう、ビュー内の状態に応じてコマンドの実行可否切り替えるとかも、
割かし GUI ではよくある要件。

367 :305:2010/11/05(金) 22:14:52
>>365
具体的に

368 :デフォルトの名無しさん:2010/11/05(金) 22:15:24
>>363
同じものWinFormsで書いてから言えば?
書いたら戻ってこなくていいけどw

369 :デフォルトの名無しさん:2010/11/05(金) 22:15:52
ヒートアップしてきたな。

370 :305:2010/11/05(金) 22:15:58
>>366
ボタン押された場合にトリガー発動させて
ボタン追加じゃだめなの?

371 :305:2010/11/05(金) 22:17:32
>>366
文字入力してもボタン押せない状態なんだけど?

372 :デフォルトの名無しさん:2010/11/05(金) 22:18:28
>>371
パソコンに馬鹿にされてんだよそれ

373 :デフォルトの名無しさん:2010/11/05(金) 22:20:27
>>370
disable になってる理由が明白な場合には disable にしてた方がいいって感じかな。
Word とかで、クリップボードに何もないときは「貼り付け」が disable になってるでしょ。

まあ、ポイントは、実行可否がコマンドの定義の部分に書かれてるってことかな。
「ボタンが押されたときに」ってやろうとすると、ボタンのイベントハンドラー内にコード書くことになるでしょ。
1つのコマンドに対して、実行と実行可否判定の場所が離れるってのはあまりよくない。

374 :デフォルトの名無しさん:2010/11/05(金) 22:22:23
>>371
フォーカスはずすと切り替わるはず。
キー入力のたびに切り替えたければ、
{Binding NewText} を {Binding NewText, UpdateSourceTrigger=PropertyChanged}
に書き換えて。

375 :デフォルトの名無しさん:2010/11/05(金) 22:23:01
機械の分際で>>305様に楯突くなんて!

376 :デフォルトの名無しさん:2010/11/05(金) 22:25:24
ちなみに、>>372 の補足。

なんで disable になってるのかパッと見てわからない場合は disable にせず、
実行されたときにアラート出す方がいいらしい。
でないとユーザーは「この機能は使えないものなんだ」って思うとかで。

377 :305:2010/11/05(金) 23:05:40
>>316さんの説明はある一定の知識のある人には丁寧で
わかりやすいんだろうけど、おれのレベルだと
何を言っているのかわからない
俺はただ、追加ボタンがクリックできない状態になっている
テキスト入力しても出来ない状態
だからずっとできる状態にしてほしいの
どこをどういじればそういう風になるのかもわからないレベルなの

初心が遠く昔の人って、知識がある前提で話すからほんとわかりにくい

378 :デフォルトの名無しさん:2010/11/05(金) 23:09:02
>>377
あっ、ちなみに、>>316>>317 は別人よ。
あれじゃわかんないと思ってコード書いた。
余裕あったら説明コメントも入れたと思う。

379 :デフォルトの名無しさん:2010/11/05(金) 23:14:01
オラオラ、初心者様の御通りだぞ
平伏せ下郎

380 :305:2010/11/05(金) 23:21:49
>>378
なんだ別人かー
わからないよね?>>316の説明だと
一応これに近いことなのかなと思ってみていたけどよくわからなかった
●コレクション・オブジェクトへのバインド
http://www.atmarkit.co.jp/fdotnet/vblab/uiframework_02/uiframework_02_04.html

>A. 自分でやること
自分?何が自分?おれのこと?ユーザー?

>B. 勝手にされること
誰が勝手にするの?
>ObservableCollectionはデータが追加されたことをItemsControlに通知する
このやり方がわからないんですけど。

そもそも何の説明?
もうまったくわかんなかった
例えると、ため口の説明を同じ内容でただ敬語で説明されただけって感じ。

>>317>>316の説明の通りにしたソースだよね?
いつかわかる日が来た時のために永久保存しておきます

381 :デフォルトの名無しさん:2010/11/05(金) 23:24:39
まだやってるのか
落ち着け

382 :305:2010/11/05(金) 23:27:19
パソコン今日届いて初めて触る人にコピペを教えるようなもの

初「コピペって何?」
上「クリップボードを中継してデータを写す作業」
初「クリップ・・何それ?」
上「クリップボードにコピーしたデータを保存して、適当な場所にペーストすることだよ」
初「いや、だからクリップってなに?コピーって?ペーストって?それってコピペの説明?」
別の上「Ctrl+C、Ctrl+Vでできる」
初「え?それってどういう意味?」(←キーボードのキーだということすらわかっていない)

今こういうのを体験した気がするわ

383 :デフォルトの名無しさん:2010/11/05(金) 23:28:07
>>380
すまん、正直 >>316 は最後まで読んでない。
普通に、WPF の基本ラインで実装しただけ。

まあ、WPF に慣れた人でも、現状は Forms 時代よりはだいぶ better にはなってるけど
その代償にめんどくささも幾分かあって、まだ過渡期って認識かも。

384 :デフォルトの名無しさん:2010/11/06(土) 00:13:00
>>382
あるある

385 :305:2010/11/06(土) 00:22:25
>>382
これってさプログラマにとって根幹にかかわることだと思うんだよね
自分で理解できればそれでいいってソフトを作っている人はこれでいいだろうけど
初心者でも直感的に操作できるソフトを作るというのは難しそう

現に>>317はtabでフォーカス移動しなければ使えなかった
これって初心者からしたらバグでしかない

結局機能はしょぼいけど、初心者が作った初心者のためのソフトが使いやすかったりする
上級者で初心者の気持ちもわかる人って解説サイトでも少ないよねー

386 :デフォルトの名無しさん:2010/11/06(土) 00:24:58
しょぼいのでいい
地道にいけ

387 :デフォルトの名無しさん:2010/11/06(土) 00:25:52
実際でもなぁ、それは UX デザインを専門にやってる人に任せたいというのが本音。
となると、「UX デザインが専門であってプログラミング詳しくない」って人がやれなきゃ意味ないのよね。

そこは WPF は「分業を推し進める」って方向に舵を切ってるわけだけども。
XAML 側は UX デザイナーが Blend とか使って作る、
プログラマーはビューには触れず、ビューモデルを作るっていう。

388 :デフォルトの名無しさん:2010/11/06(土) 00:26:01
初心者が作ったソフトは使いにくいです
拡張性0、ボタン大量、etc...
アラアラと思う…

389 :デフォルトの名無しさん:2010/11/06(土) 00:27:25
というか、 >>317 は、コード少ない方が理解しやすいかなって思って
Binding の記述削ってたんだけど。

その結果、バグだと言われて、
一方、「C# 側がコード量多い」って言われたのはさすがにちょっとへこむ。

390 :305:2010/11/06(土) 00:33:47
private void button1_Click(object sender, RoutedEventArgs e)
{
Button button1 = new Button();
button1.Content = textBox1.Text;
this.wrapPanel1.Children.Add(button1);
}

だってさ、初心者でもたったこれだけでできることを
上級者がXAMLでやると、デリゲートだとか、バインドがあっちこっちにあったりして
どうしてそうなっちゃうの?って感じ

391 :デフォルトの名無しさん:2010/11/06(土) 00:37:01
たいていそれだけで要件収まらないから。
いいのよ、別に、ほんとにそれだけの要件ならそれで。

392 :デフォルトの名無しさん:2010/11/06(土) 00:40:42
コードの小分けが出来るのがいい
というかさ、winformsでもbind使ってたろ?
使ってなかったのか?もしかして…

393 :デフォルトの名無しさん:2010/11/06(土) 00:46:42
先日の初心者スレの人はブーブー言いつつ皆に熱心に諭され勉強し、
1日でWPF使いに変身したというのに

394 :デフォルトの名無しさん:2010/11/06(土) 00:47:10
>>392
そういうことだ。
多くの人が使ってないんだよ、bind。

で、不意に規模が膨らんじゃってからギャップが越えられなくなる。

395 :305:2010/11/06(土) 00:47:59
>>392
使ったこと無いよ
ソースが変わったら、ターゲットのプロパティを書き換えるコードを書いてた
イベントハンドラ大量、更新させるためのコード

結果、ある程度の規模になると、更新一部し忘れたり、どこで更新されたかわからなくなったり
イベントハンドラが大量で一体どこで何をしているのかわからなくなった

だからそんなことにならないような簡単なユーティリティだけ作ることに
例えば、空フォルダを見つけて削除や、削除したファイルをリストアップするだけなど
ファイラーから実行できるような手軽なものを作っていた

396 :305:2010/11/06(土) 00:49:34
>>393
それおれだから
WPF使いじゃなくてWPF始めただけだからw

397 :デフォルトの名無しさん:2010/11/06(土) 00:51:54
いやいや、Bind使おうよ…
WinFormsでもさ…
UserControlでView作ってBindで繋げて、振る舞いはインターフェイスで定義してってやるだろ…
その辺がもうちょい賢くなって便利になったのがWPFなんだし…

398 :デフォルトの名無しさん:2010/11/06(土) 00:54:20
イベント直書きは10年前のdelphiでもうこりごり

399 :デフォルトの名無しさん:2010/11/06(土) 00:54:59
>>395
もうPythonとかスクリプト言語使えば?
君はそのほうがよっぽど幸せになれると思うよ

400 :305:2010/11/06(土) 00:57:18
>>397
使えるなら使うさ
俺は基本どぼんに乗っているコードをコピペすることしかできないさ
2001C# 発売当日に魔が差して買ったおれがさ

401 :305:2010/11/06(土) 00:59:13
>>399
Python、Rubyとかもやったよ
でもやっぱ、GUIのかっこいいの作りたいじゃない?

402 :デフォルトの名無しさん:2010/11/06(土) 00:59:51
うーん、コピペ自体は悪いとは言わないんだけどね。
そうなると、古い、現代的には問題が明らかになってるコードって、人類の抱える負債だなぁ。

403 :デフォルトの名無しさん:2010/11/06(土) 01:00:12
空フォルダを見つけて削除するGUIユーティリティ?w
そういうのはコマンドラインで使えた方がどう考えても便利です

404 :デフォルトの名無しさん:2010/11/06(土) 01:00:31
>>401
かっこよくねぇよww
かっこいい人が作った GUI がかっこいいだけだよ。

405 :デフォルトの名無しさん:2010/11/06(土) 01:03:31
こういう技術の根底にある考え方って敷居高いのかなぁ
うーむ…

406 :デフォルトの名無しさん:2010/11/06(土) 01:04:14
スレがのびてると思ったら…
まぁ宗教議論よりはいいか

407 :305:2010/11/06(土) 01:06:09
>>403
文脈理解しろよ
今作ろうとしているのは動画ソフトのフロントエンド的なものを作ろうとしているの
多分完成したら新しい時代がくる

アイデアだけはすばらしいんだよおれって
そこらのフリーソフトを超える使い易いソフトをいくつも妄想してきたが
プログラミングができない

408 :デフォルトの名無しさん:2010/11/06(土) 01:09:27
>>407
なんか急に口調変わったぞw騙り?w

409 :デフォルトの名無しさん:2010/11/06(土) 01:12:29
他の言語でもフレームワーク触った事あるならすぐ理解出来ると思うけどね
名前は違えどやってる事は一緒だし

410 :デフォルトの名無しさん:2010/11/06(土) 01:20:14
ただでも、でかいフレームワークだと、その裏にある要求とかモデルとかを簡潔に説明した文章って少ないからねぇ。

411 :デフォルトの名無しさん:2010/11/06(土) 02:53:26
WPFがダメなのはIDEの至れり尽くせりサポート大前提で設計してるくせに
肝心のサポートが話にならないチープさなところ
こう書くと老害が「HTMLだって手書きでやってきた」とかほざくんだがナンセンス
今時のCSS&JavaScriptごちゃごちゃに入り交じってる案件メモ帳でやってみろってんだ

412 :デフォルトの名無しさん:2010/11/06(土) 02:57:54
Blendは敷居高いと思うが
windowsFormで作る程度のならVisualStudioでドラッグ&ドロップで行けるだろ

413 :デフォルトの名無しさん:2010/11/06(土) 04:02:01
>>411
こういうの見ると
あぁ、この人ってWPF使った事ないのに批判してるんだな と哀れに思うわ。

実際は>>412なのにまるで分かってない。

414 :デフォルトの名無しさん:2010/11/06(土) 04:04:14
否定だけなら子供でもできる
反論があるなら根拠を述べよ

415 :デフォルトの名無しさん:2010/11/06(土) 04:05:49
>>414
日本語がわからないとは

416 :デフォルトの名無しさん:2010/11/06(土) 07:30:20
>>411のほうが老害くさいよな
どうせVB6のクラサバみたいなのしか作ったこと無いくせにw

417 :デフォルトの名無しさん:2010/11/06(土) 08:11:04
TabControlの複数のページでListViewを表示していて、
GridViewの列の並びや幅などを同期させたいのですが、どのようにすればいいのでしょう

今はページを切り替える際に、列を作り直してるんですが、非常に無駄なことをしている気がします
GridView.Columnsあたりに、共通のソースをバインディングするとかできませんかね

418 :デフォルトの名無しさん:2010/11/06(土) 08:46:46
>>412
まあ、しゃあない。
Adobe 製品とか見てみなって。
ビジュアルデザイン系のツールみんなあんな感じだから。

419 :デフォルトの名無しさん:2010/11/06(土) 09:17:30
バカチョンって奴ね

いいんだよ雑魚グラマが増えて仕事が尻拭い中心になったんだ
ここらで敷居をあげて少し淘汰されたほうがいい

420 :デフォルトの名無しさん:2010/11/06(土) 11:08:22
>>412
その程度のモンをわざわざWPFで作る意味ってなんだよwwwww
不自由環境に快感を見出すマゾなのか?

421 :デフォルトの名無しさん:2010/11/06(土) 11:11:12
その程度のモンならWPFだから特別難しいってことはないだろ
デザイナでコントロール貼り付けてプロパティ弄ってダブルクリックしてイベントハンドラ書くだけ
WinFormsと何が違う?

422 :420:2010/11/06(土) 11:16:41
>>421
怖いんだ・・
とにかくwpfが怖いんだ!

423 :デフォルトの名無しさん:2010/11/06(土) 11:18:44
WPF ToolKitのDataGridのTemplateってどうすればいいんだすか

424 :305:2010/11/06(土) 14:10:31
>>317
デリゲートもインターフェースもやったことなかったが
一晩かけていろいろ調べてなんとなくわかった

独自のコマンドを作るにはICommandインターフェースを使ったクラスを自作しないといけなくて
そのためにDelegateCommandクラスが作られていて、普通はここに実行する内容を書けばいいはずだけど
汎用的に使えるように、具体的な実行内容はViewModelでして、DelegateCommandクラスでは
デリゲートを宣言して実行メソッドを呼び出しているって感じかな?
もしくは、コンストラクタの引数にメソッドを変数みたいに渡したいからDelegateを使っているのか?
そこらへんはよくわからないが、なんとなくやっていることはわかった気がする

これって、メニューやボタンがクリックされたらどうするかというイベントハンドラを大量に書かないためにと、
別にボタンを作って作成ボタンとは違った振る舞いの独自のコマンドを作るときも
DelegateCommandクラスを利用することで、無駄なコードを書かないようにするため

こういうややこしいことをしているのは、こういう理由だからって理解でOK?

425 :305:2010/11/06(土) 14:14:09
訂正

>これって、メニューやボタンがクリックされたらどうするかというイベントハンドラを大量に書かないためにと、
ボタンを作成するために、メニューやボタンのイベントハンドラを大量に書かないためにと

426 :デフォルトの名無しさん:2010/11/06(土) 14:15:40
違うよ
ViewModelをViewに依存させないため。
イベントハンドラを追加するときってイベントを受ける側で送る側にイベントハンドラを登録するので
ViewModelの中でイベントハンドラをViewに結び付けるとViewModelがViewに依存してしまう。
そこで逆にViewModelでは「俺はこれだけのコマンドをサポートしている。勝手に呼び出せ」という風に
コマンドを公開するだけにして、コマンドを具体的なイベントに結び付けるのはView側で行う。

427 :デフォルトの名無しさん:2010/11/06(土) 14:38:49
このあたりは悩み所だよなぁ。どこで切るかケースバイケース過ぎる。

ViewModelはViewのシャドウなわけである程度依存するのは仕方ないのでは?
例えば選択状態をViewModelが知っているだけでも、
ViewModelはViewが選択機能を持つことを知っていることになる。

MVVMのそもそもの動機(自動回帰テスト、スキンに依存しない構造)を考えると、
ViewModelはViewの機能には依存しても、Viewの"インスタンスに"依存しない、が正しい気がする。

428 :305:2010/11/06(土) 15:02:44
>>426
依存させないのは
例えばボタンクリックで作成だったのを変更して
メニューからのみボタンを作成にすることにしたときに
イベントハンドラだと書き換えたりしなければいけないから
GUIの変更がしづらくなる

だからコマンドバインディングにコマンドを登録だけして
どのコマンドをどの時点で呼ぶかは気にすることは無いという感じかな

429 :デフォルトの名無しさん:2010/11/06(土) 15:03:31
>>422
なりすまし乙
実に程度が知れるな

430 :デフォルトの名無しさん:2010/11/06(土) 15:07:18
WPFのコマンドは実装を含まず意味を表すのが基本で云々という講釈↓

431 :デフォルトの名無しさん:2010/11/06(土) 15:08:57
コマンドなんてpublicメソッドと同じ
ただメソッドだとXAMLにちょろっと書くだけで自動的に呼び出されるというわけにはいかないので
ちょっと回りくどい仕組みになってるだけ

432 :デフォルトの名無しさん:2010/11/06(土) 15:19:45
>>427
ViewがViewModelの用意する機能を使うかどうかは自由なので、
ViewModelがViewを知っているとはいえないんじゃないかな。

WPFでコマンドっていうなんか回りくどいのを推奨してるのは、
XAMLがプロパティと相性のいい言語だからということと、
実行の可否(CanExecute)を持たせることができるってことくらいかな。
ObjectDataProvider使えばXAMLで直接メソッドを指定することもできるはず(未確認)
だけどこれは記述が汚くなるよね。

433 :305:2010/11/06(土) 15:22:40
あと、DelegateCommandクラスでデリゲート宣言して、ViewModelのメソッドを呼び出しているのはなぜかわからない
依存させたくないだけなら、DelegateCommandクラスでViewModelのExecuteの内容を書けばいいですよね?
依存させないようにするにはRoutedCommandをコマンドバインディングに登録するだけでいいのですから

ViewModel内にコマンドの実行内容Executedを書くということは、
本質は違うけど、WinformsでいうとイベントハンドラをForm1に大量に書いていくのと同じような気がするんだけど?
コマンドはコマンドで分けた方がよくないですか?

434 :デフォルトの名無しさん:2010/11/06(土) 15:30:04
いくらクラス分けようがコマンドの実行内容はViewModelにしっかり依存してるんだから
ViewModelとコマンドを分けても見づらくなるだけで意味ないだろ。
ViewとViewModelを分けるのは主にViewModelの単体テストやViewの変更を行いやすくするため。
ご察しの通り大規模開発向けの仕組みだから要らないと思うなら要らない。

435 :305:2010/11/06(土) 15:32:41
>>434
そっかー、今のとこ恩恵は薄いけど
いつも規模が大きくなると途中で挫折してたから
今回はこの考え方でやってみます

436 :305:2010/11/06(土) 15:40:26
まとめると、イベントで処理すると、VIEWの個々の部品に対して依存した実装になるので
変更耐性を強くするために、コマンドで通話する
で、コマンドの実行内容はViewModelに依存しているから、
ViewModelで実装するためにコマンドからデリゲートで呼び出す形にすると

こんな感じかな
わかってくるとちょっとおもしろくなってきた

437 :デフォルトの名無しさん:2010/11/06(土) 15:41:24
いいから独演会してねえではよ死ね

438 :305:2010/11/06(土) 18:14:51
MVVSでプログラミングするのはWPFプログラマだけという
奇妙な世界ができあがるわけですね

囲い込んでるのか首を絞めてるのかわかりませんね
プログラミングシェーダの世界ですね

439 :デフォルトの名無しさん:2010/11/06(土) 18:25:18
MVVMはMVCの亜種で、ごくありふれた設計なんだが

440 :305:2010/11/06(土) 18:31:01
MVC亜種でもMVVM経験者じゃないとコードの意味すら伝わらないじゃないですか


441 :デフォルトの名無しさん:2010/11/06(土) 18:33:42
MVCだろうがMVPだろうが統一されたやり方あるなら教えてたもれ

442 :デフォルトの名無しさん:2010/11/06(土) 18:34:24
「WPF/Silverlightで開発する時は、こうすると管理が楽ですよー」 ってだけの話なのに
一体何が問題になるのやら、さっぱり解らん。

概念を理解するのに、大して学習コストが掛かる訳でも無いし。
(MVVMを厳密に適用した実装を行うのは、若干慣れが要るが)

443 :デフォルトの名無しさん:2010/11/06(土) 19:04:11
MVVMはさ
MとVを直接バインドしちゃうと融通効かないから
Vに近いレイヤを一個経由しようってだけだよ
コンポジッション系のフレームワークと融合してややこしいことになってるとこがあるけど

444 :305 ◆Jzt/EX0TGY8T :2010/11/06(土) 19:39:05
>>438
成り済ましやめてもらえませんか?
MVVSなんてデリゲートもインターフェースも知らない初心者のぼくが知るわけないでしょ

445 :デフォルトの名無しさん:2010/11/06(土) 19:55:35
MVVMなんて、JavaでStrutsからDI系フレームワークに移行させられるよりよっぽど覚えやすいと思うんだけど

446 :デフォルトの名無しさん:2010/11/06(土) 20:13:08
WinFormsみたいに密結合していいならWPFでもMVVM使わなくていい。
WPFで開発するときの単なる方法論の一つ。

447 :デフォルトの名無しさん:2010/11/06(土) 21:44:39
そこまでは素人の考え。
玄人になるとMVVM一択になってくる。

448 :デフォルトの名無しさん:2010/11/06(土) 21:53:35
MVVMを理解して使い慣れると、二度と元に戻りたくなくなる。

>>447
初心者がいきなり全部理解するのは無理だから、最初は深く使わずにM-Vから始めるのは悪い事ではないだろう。

449 :305 ◆Jzt/EX0TGY8T :2010/11/06(土) 22:01:31
MVVMってなんの話してるのかと思ったら
まんま俺が徹夜で勉強してたことじゃないかw
しかも検索したらトップでDelegateCommandの解説してるし
もしかして教えてくれたのはそこのひと?

450 :デフォルトの名無しさん:2010/11/06(土) 22:03:46
っていうかWPFはWindowの継承が実質的に出来ないから、Windowにコーディングする気にはならん

451 :デフォルトの名無しさん:2010/11/06(土) 22:17:31
そもそも実装を継承する考えがいまさらでしょ。

452 :デフォルトの名無しさん:2010/11/06(土) 22:37:34
>>451
教条主義はJavaあたりでやってくれ

453 :デフォルトの名無しさん:2010/11/06(土) 23:04:50
教条主義の意味分かって言ってるのか?

454 :デフォルトの名無しさん:2010/11/07(日) 08:18:01
VMのOnPropertyChangedについて、

public int x
{
 get { return _model.x; }
 set
 {
  if(_model.x != value) // ← コレ ★
  {
   _model.x = value;
   OnPropertyChanged("x");
  }
 }
}

★のチェックが無いとbindingのTwoWayで無限ループに
なりそうな気がするんですけど、必要ないんでしょうか。
ターゲット側でチェックされてる?大丈夫?

455 :デフォルトの名無しさん:2010/11/07(日) 08:25:02
ターゲット側でもチェックされてるが
余計なイベント通知はない方がいいだろ

456 :デフォルトの名無しさん:2010/11/07(日) 08:43:02
ありがとー。
無いとなんか気持ち悪いし、つけときます。

457 :デフォルトの名無しさん:2010/11/07(日) 08:50:52
Canvasにグリッドや曲線を自分で描いてマウスイベントで色々処理したい・・・
というプログラムを作りたいんだけどWinFormよりWPFのほうが容易にできますか?


458 :デフォルトの名無しさん:2010/11/07(日) 10:43:52
InkCanvas

459 :デフォルトの名無しさん:2010/11/07(日) 11:09:57
MVVMを使う程の規模なのか。

460 :デフォルトの名無しさん:2010/11/07(日) 12:23:29
MVVMでやってみたいけどどこから手を付けていいのか入り口すらわからない\(^o^)/

461 :デフォルトの名無しさん:2010/11/07(日) 14:07:01
>>458
さんくす

462 :305 ◆Jzt/EX0TGY8T :2010/11/08(月) 15:30:23
WPFって結局WinFormsとあんまり変わらない気がする

Form1がView.xamlとView.csの二つのファイルに分かれただけで
表示部分とそれをコントロールする部分はくっついたままなのね
ただ、WinFormで苦労したGUI部分が簡単にいじれるようになっただけで
Form1にゴリゴリコード書くようにView.csにゴリゴリ書いてける
MVVMのデザインパターンもWinFormでもやってきたことだからそれほど難しくない

どうせなら、Viewのコントロールする部分もXamlでしか書けないようにして
C#のコードではロジックしか書けないようにしてしまえばいいのに
そうすれば、これはViewに関する事だから〜と意識的にロジックと表示部分をわけなければいけない
ということがなくなるんじゃない?

463 :デフォルトの名無しさん:2010/11/08(月) 16:33:03
C#で書かないことにどれだけのメリットがあるか微妙

464 :デフォルトの名無しさん:2010/11/08(月) 17:30:03
というかあいつはプログラム初心者だろ…
世の中の流れと考えについて行けてない
最低でも5言語使って10のフレームワークを使え
言う事が無茶苦茶すぎる

465 :デフォルトの名無しさん:2010/11/08(月) 17:44:53
5つくらいの言語でプログラム書いてきたなんて、
そのくらいは普通にごろごろ居るけどな。

フレームワークは使えるじゃなくてそれぞれの言語で
作ってきたじゃねえと基礎力がどうだかなって感じがする。

466 :デフォルトの名無しさん:2010/11/08(月) 18:13:21
でも転職したり社内で評価されるためにはそういうスキルは必要

467 :305 ◆Jzt/EX0TGY8T :2010/11/08(月) 19:12:58
分離したほうがいいなら、分離コードしか書けない言語にすればいいじゃない
viewに対してプロパティ以外で操作するのは無理にしちゃえばいい
それなのにロジックと混同して使えるようにしているから
解説サイトも簡潔に説明するためにイベントハンドラにロジック直接書いて
それ見た初心者がそういうもんだと思って真似するわけじゃない

VIEW言語、Viewコントローラー言語、VIEWModel言語、Model言語
とか作ってさ、完全に分けてしまえばいいんだよ

468 :デフォルトの名無しさん:2010/11/08(月) 19:20:28
>>467
ちょっと待て、落ち着いて考えて欲しい。
お前さんXAMLとC#だけでさえ手に余ってるのに、さらに倍に増やせとか馬鹿だろw

469 :デフォルトの名無しさん:2010/11/08(月) 20:34:35
どうせ消えていくものに貴重な記憶力を割く気がしない
人間の記憶量には限りがあるんだよ

470 :デフォルトの名無しさん:2010/11/08(月) 20:47:56
>>467は御託並べる前にMVVMじゃなきゃ死ぬレベルの複雑なビューを作ってみるべき
どうせV:VMが1:1+αのコードしか書いてないんじゃないの?

471 :デフォルトの名無しさん:2010/11/08(月) 20:48:35
ニュース速+板で祭り中!!

【尖閣ビデオ】 中国漁船衝突の映像、YouTubeに流出…動画は海保研修用のものと判明、複数本コピーが存在★2XX
http://kamome.2ch.net/newsplus/

現在の1スレ消費速度平均6〜8分!!

ニュース速報+板史上の歴代最多数スレ
1位  263 朝日新聞社員、2ちゃんねる差別書き込み事件 (2009/04)
2位 ★2XX 中国漁船衝突の映像、YouTubeに流出  ←★New!★ (2010/11)
3位  230 毎日新聞社デイリーニューズ「WaiWai」問題 (2008/07)
4位  156 韓国、2ちゃんねる米国鯖にサイバーテロ (2010/03)
5位  117 2ちゃんねる閉鎖問題 (2007/01)


472 :デフォルトの名無しさん:2010/11/08(月) 20:50:42
>>469
苦労して覚えた知識でも否応なしにたった数年で陳腐化するのに何でプログラミングなんてやってんの?

>>467
最初はそういうもんだ。基礎を勉強してないのに最初から応用編とか無謀すぎる。
初心者相手にいきなりpatterns & practicesのPrismみたいなの持ってきたら一瞬で挫折する。

473 :305 ◆Jzt/EX0TGY8T :2010/11/08(月) 21:12:12
>>470
複雑なビューってどういうのかよくわからないけど

WinFormではマンガミーヤと同じようなUIのソフトを作った
それプラス、書庫内の画像を自動で画像変換して圧縮し直すなどの機能をつけたりなど
でも途中でかなり面倒なことになってやめたけど

今回はそれに動画も閲覧できる機能をつけて作ってみようと奮闘中です

474 :デフォルトの名無しさん:2010/11/08(月) 21:22:14
>>473
TreeViewとか、タブドキュメントインターフェイスとか

475 :デフォルトの名無しさん:2010/11/08(月) 21:24:52
>473
イラストレーターみたいなドローソフト作って味噌

476 :305 ◆Jzt/EX0TGY8T :2010/11/08(月) 21:32:21
>>475
数学ちゃんと勉強しなかった低学歴だから無理w
XNAで3D版シムシティみたいなのを作ろうとしたけど
適当にビル立てただけでやめちゃった

477 :デフォルトの名無しさん:2010/11/08(月) 21:40:05
学歴よりむしろ根性が足りないなw

478 :305 ◆Jzt/EX0TGY8T :2010/11/08(月) 21:52:21
構想が実力以上のものだから途中で力尽きちゃうんですよね
それでも座標変換に線形代数の知識が必要だから
そういうの勉強したし、シェーダーについても勉強して
3Dの格子マップにランダムにビルが建つようにはできたけど
それで満足しちゃった
今のゲームって個人でできるレベルじゃないから
市販ゲームと比べてあまりにもしょぼすぎる

479 :デフォルトの名無しさん:2010/11/08(月) 22:01:06
自分語りいらねえ
居つくなよ馬鹿

480 :デフォルトの名無しさん:2010/11/08(月) 22:02:40
>>478
暇なやつプログラミングしようぜ!
http://yuzuru.2ch.net/test/read.cgi/news4vip/1288937968/

ここでやれ

481 :デフォルトの名無しさん:2010/11/08(月) 22:03:03
でもさ3Dとか例外的に数学必要だがプログラム言語って
語学と同じでコマンドや文法覚えるだけだから文系向きじゃねーの

482 :デフォルトの名無しさん:2010/11/08(月) 22:09:33
ゲーム開発の心得があるのなら
WPFでゲームのUI作るのも面白いんじゃないか。

SlimDXのWPF Interopあたりを使う。D3DImageに描画してDirectXから使ってもいいけど
アニメーション使って作ればUIだけは市販ゲームぽくなるぜw

483 :デフォルトの名無しさん:2010/11/08(月) 22:10:21
>>480
やめろ馬鹿
俺の心休まる一時を邪魔すんな

484 :305 ◆Jzt/EX0TGY8T :2010/11/08(月) 22:42:44
ちょっと質問なんですが

MVVMで画像を表示するソフトを作る場合
モニタ、再生機器、画像の入ったDVDをイメージして作ろうと思っています

VMのプロパティでImagesを公開し、画像ファイル名などはDataGridに表示され
選択することで画像が表示される。ここまではバインドなどでxamlだけでできる

ボタンを押したらDataGrid内の選択項目が移動して次の画像が表示される動作
↑View.csで記述?
ボタンを押すとDataGridの項目削除と画像ファイルの削除をするといった動作
↑この場合はどのようにすればいいですか?
ファイルの削除はコマンドでVMにやらせるとして、項目の削除はどうすればできますか?

485 :デフォルトの名無しさん:2010/11/08(月) 22:46:11
vipでやれ

486 :デフォルトの名無しさん:2010/11/08(月) 22:50:44
>>484
選択項目を取得設定するプロパティをVMに定義
Viewには何もさせなくていい。ほんとにバインドだけでいい。
DataGridの項目もVMに持たせておいてViewではバインドするだけ。

487 :305 ◆Jzt/EX0TGY8T :2010/11/08(月) 23:06:26
>>486
なるほど、それぐらいやらないと分離したことにならないんですね
WinFormで作ったときはそこの境界が曖昧で苦労した
ありがとうございます

>Viewには何もさせなくていい。ほんとにバインドだけでいい
これを何度も言い聞かせながら作ります

488 :デフォルトの名無しさん:2010/11/09(火) 00:09:54
>>481
そう考えてる輩が多いからデスマる

489 :デフォルトの名無しさん:2010/11/09(火) 00:12:59
デスナ

490 :デフォルトの名無しさん:2010/11/09(火) 00:20:08
>>481
そもそもとして、自然言語でも、文法は理系の方が強いよ、実は。
詩的表現の崩れた文読むのは苦手だけど。

491 :デフォルトの名無しさん:2010/11/09(火) 00:22:11
関数化された機能をシナリオに沿って呼び出すだけなら文系向き
その関数の中身を書くのは理系向き

492 :デフォルトの名無しさん:2010/11/09(火) 00:28:19
マ板でやれ

493 :305 ◆Jzt/EX0TGY8T :2010/11/09(火) 00:51:20
>>490
口げんかでも理系のが勝つよね
でも、そんなことしたら確実に嫌われるがw

494 :デフォルトの名無しさん:2010/11/09(火) 02:05:04
NGにしてすっきり

495 :デフォルトの名無しさん:2010/11/09(火) 04:26:54
英語で口喧嘩して理系を黙らせた俺が通るよ

496 :デフォルトの名無しさん:2010/11/09(火) 05:04:14
それ英語で書けよw

497 :デフォルトの名無しさん:2010/11/09(火) 05:16:03
excite!でドイツ語再翻訳したら酷い事になった。どうしてくれる

英語で口喧嘩して理系を黙らせた俺が通るよ
Ich wer ich streite mich in Englisch, und schlos physischen Wissenschaftsgehen zu
私は主張します誰、私は英語の私です、そして、ロックされる身体的なWissenschaftsgehen

498 :305 ◆Jzt/EX0TGY8T :2010/11/09(火) 05:40:35
My English shut the fucked up scientist

499 :デフォルトの名無しさん:2010/11/09(火) 06:38:50
日本語でおk

500 :デフォルトの名無しさん:2010/11/09(火) 20:37:15
WindowのMinWidthとMinHeightを設定して最大化したWindow
のWidthとHeightって変えられないんでしょうか?

WindowStateをいったんNormalにしてWidthとHeightを変えて
またMaximizedを設定すれば一応できたのですが
画面がちらつくのでこの手はあまり使いたくないです。


501 :デフォルトの名無しさん:2010/11/09(火) 21:12:09
>>500
できますん

502 :デフォルトの名無しさん:2010/11/09(火) 22:12:18
白熱しているところ低レベルな質問で申し訳ないんですが、
VisualStateManagerについて教えてください。

やりたいことはWindowがアクティブなときとディアクテブなときで
コントロールの背景色を変えることです。

最初はリソースにアクティブ用とディアクティブ用のブラシを用意して、
ActivatedとDeactivatedのイベントで直接BackGroundを切り替えていたんですが、
そういうのはVisualStateManagerを使えという天啓がありまして、今試行錯誤しているところです。

とりあえずかいたコードはこんな感じです(動きませんが)
http://ideone.com/jxA1r

間違っている箇所や、正しい使い方を教えていただけないでしょうか。
ついでにこういう場合、背景用のブラシを1個リソースとして用意して動的バインディングで
色を変えれば楽なような気もします。
まだWPF始めたばかりでどの様な方法がベストなのか判断がつかないので、そのあたりのアドバイスも
出来ればお願いします。

503 :デフォルトの名無しさん:2010/11/11(木) 02:03:52
> 動きませんが
> 今試行錯誤しているところです。
> まだWPF始めたばかりで
> 間違っている箇所や、正しい使い方を教えていただけないでしょうか。
> 色を変えれば楽なような気もします。

たったこれだけの行数でこれだけ「教えて君臭」を漂わせる書き込みも珍しい。
一つ良い事を教えておく。俺たちは君の道具でも、無償サポセンでもない。

504 :デフォルトの名無しさん:2010/11/11(木) 02:24:55
>>503
これほど「わかりません」を漂わせる書き込みも略

505 :デフォルトの名無しさん:2010/11/11(木) 02:31:18
わからないからって煽るなよ

506 :デフォルトの名無しさん:2010/11/11(木) 07:56:25
「教えて君臭」漂わせてるっていうか教えて君そのものだよな
教えてくれって書いてあるし

507 :デフォルトの名無しさん:2010/11/11(木) 08:05:12
質問だしなw

508 :デフォルトの名無しさん:2010/11/11(木) 09:20:04
WPF難しいって言う人多いけど、皆さんは習得(どの程度で習得とするかは適当に)にどの位かかりました?

509 :デフォルトの名無しさん:2010/11/11(木) 09:22:39
アプリ作れるまで3日ぐらい
難しい方だよねWPFは

510 :デフォルトの名無しさん:2010/11/11(木) 09:27:38
>>503
周りがスルーしている中わざわざレスしていただきありがとうございます。
質問する場所間違えたなぁと後悔していましたが、
このまま誰にも相手にされずに流れていくのも寂しいなと思っていたところでした。
これを励みに今日もWPFの勉強に精を出したいと思います。



511 :デフォルトの名無しさん:2010/11/11(木) 14:02:51
3.5と4でバインディングの何が変わったのか教えてくれ
コンパイルできない

512 :デフォルトの名無しさん:2010/11/11(木) 15:25:40
単発質問なんですけど、SharedSizeGroupを使ってポップアップメニューのアイテムの要素を整列をする際に、
Separatorのアイテムにも、サイズグループを適用したい場合はどのようにすればいいですか。

たとえばVisual Studioのポップアップメニューだと、セパレータはアイコンのセルに
重っていないけど、それと同じようなことがしたいです。

SubmenuItemTemplateKeyに適用するコントロールテンプレートと同様のものを
SeparatorStyleKeyスタイルのTemplateプロパティに適用して、同じサイズグループを
使いたいと思ってたんですが、セパレータのアイテムだけうまくグループ化されません。

513 :デフォルトの名無しさん:2010/11/11(木) 18:17:35
Windowsフォームで作ったアプリのボタンの形状は
クライアントのOSに依存すると思うのですが
WPFのコントロールはOSに依存しないのですか?
xpしかないので確かめられないんですけど

514 :デフォルトの名無しさん:2010/11/11(木) 18:19:20
システムカラーとか使ってたら当然依存する

515 :デフォルトの名無しさん:2010/11/11(木) 18:23:29
既定のTemplateはOSのテーマに従った外見になるように作られてる

516 :デフォルトの名無しさん:2010/11/11(木) 18:37:13
http://www.atmarkit.co.jp/fdotnet/chushin/chushinmeeting_01/chushinmeeting_01_01.html

DataGridコントロールやデータ・バインディングがサポートされ、例えば、データベース・オブジェクトをドラッグ&ドロップするだけで、それらの機能をアプリケーションに貼り付けられるようになっていたりします。

これってどうやってするの?

517 :デフォルトの名無しさん:2010/11/11(木) 18:49:10
ここてソースうpしたら指摘もらえたりする?

518 :デフォルトの名無しさん:2010/11/11(木) 18:52:04
一つ良い事を教えておく。俺たちは君の道具でも、無償サポセンでもない。
by 503

519 :デフォルトの名無しさん:2010/11/11(木) 19:00:41
役立たず

520 :デフォルトの名無しさん:2010/11/11(木) 19:26:19
MSDNフォーラムに行けよ

521 :デフォルトの名無しさん:2010/11/11(木) 20:42:38
いいからさっさと質問しろ

522 :デフォルトの名無しさん:2010/11/11(木) 22:02:52
>>502のように、動かないと書いてもどう動かないか書かない、
試行錯誤したと書いても何を試しどうなったのか書かない、
デバッグ作業を他人に丸投げした挙句に
"始めたばかり"を錦の旗のように掲げるようなカキコじゃなきゃ
大抵回答はもらえると思うぞ。

523 :デフォルトの名無しさん:2010/11/11(木) 22:07:18
ごちゃごちゃ理屈っぽい奴らだな
嫌なら答えなければいいだろ
始めたばかりって前置きするのは普通の会話だろ

やさしく教えてねー
初心者的間違いしてますーって意味含んで言ってるんだろ

おまえは日常で人と会話できるのか?

524 :デフォルトの名無しさん:2010/11/11(木) 22:09:23
>>522みたいな人間的に終わっている奴は
ある程度プログラミングできてもずっとこき使われるだけの平止まりだろな
根暗で誰からも相手されず、飲みにも誘ってもらえない童貞
いつか鬱病になって自殺するんだろうな

525 :デフォルトの名無しさん:2010/11/11(木) 22:15:54
そんなレッテル貼りいらんわ

526 :デフォルトの名無しさん:2010/11/11(木) 22:18:20
しょうもねえw

527 :デフォルトの名無しさん:2010/11/11(木) 22:25:10
>>522
またおまえか

528 :デフォルトの名無しさん:2010/11/11(木) 22:28:50
同僚にもいるな、プログラム好きだけど人と接するのが嫌いなやつ
気持ち悪い、早くやめればいいのに

529 :デフォルトの名無しさん:2010/11/11(木) 22:29:30
で、>>528はどうWPFと関係あるの?

530 :デフォルトの名無しさん:2010/11/11(木) 22:46:49
>>528がやめればいいのに

531 :デフォルトの名無しさん:2010/11/12(金) 00:07:34
>やりたいことはWindowがアクティブなときとディアクテブなときで
>コントロールの背景色を変えることです。

この説明があって動かないっていったら十分すぎる説明だろ
おまけに貼っつけてあるコードだって大して長くないし
最初から教える気ないのに偉そうなこと言うな
まあ俺も教える気ないけどな

532 :デフォルトの名無しさん:2010/11/12(金) 00:12:57
自演擁護うぜえ

533 :デフォルトの名無しさん:2010/11/12(金) 00:23:23
「俺も」だってw

534 :デフォルトの名無しさん:2010/11/12(金) 00:28:54
自演乙

535 :デフォルトの名無しさん:2010/11/12(金) 20:20:42
俺俺俺も

536 :デフォルトの名無しさん:2010/11/13(土) 09:16:53
Prism 4 - November 2010
http://compositewpf.codeplex.com/releases/view/55576

Prism 4.0 Readme
http://msdn.microsoft.com/en-us/library/gg405471(PandP.40).aspx

What's New in Prism 4.0
http://msdn.microsoft.com/en-us/library/gg430871(PandP.40).aspx

537 :デフォルトの名無しさん:2010/11/13(土) 15:17:03
WPFやってみた
Windows Formとは作り方がかなり異なってるな
依存関係プロパティとか、以前はなかったものがあるみたいだし。

解説サイトも少ないし、C#5.0が出るくらいまで様子見しててもよさそうだな。

538 :デフォルトの名無しさん:2010/11/13(土) 15:36:45
>>537
その姿勢だと一生やらないに一票

539 :デフォルトの名無しさん:2010/11/13(土) 15:47:07
様子見は賛成

540 :デフォルトの名無しさん:2010/11/13(土) 15:49:04
俺は日和見で

541 :デフォルトの名無しさん:2010/11/13(土) 16:06:10
WPFのフリーソフトがあったら使う?
まったく同じ機能のFormアプリケーションとWPFアプリケーションを比べた場合、
どちらが好まれるの?

542 :デフォルトの名無しさん:2010/11/13(土) 16:28:26
WPFはエロゲ開発者向けですね

543 :デフォルトの名無しさん:2010/11/13(土) 16:37:29
>>541
機能が同じでUXが違うということ?
無駄に重くて面倒くさいUIになってればWPFは避けられるし
美しくスッキリ見やすくなっていればWPFを選ぶでしょ

544 :デフォルトの名無しさん:2010/11/13(土) 16:43:16
現状だとWPF使う人のほうがスキルが上だろうからWPFの方を選ぶな

545 :デフォルトの名無しさん:2010/11/13(土) 16:44:50
DataGrid置いただけなのに
GF9800だとfpsが30しかでない
スクロールするとfpsは一桁
相当重いね

546 :デフォルトの名無しさん:2010/11/13(土) 17:01:08
何言い出してるのこの子…

547 :デフォルトの名無しさん:2010/11/13(土) 17:30:59
ボタンの中にボタンを入れられるんだな
クソワロタ

<Button>
<Button>
</Button>
</Button>

ってやったらボタンの中にボタンが入った

548 :デフォルトの名無しさん:2010/11/13(土) 17:31:50
>>541
機能もUIも完全に同一のアプリケーションが二種類有ったら、
一般ユーザは 「どっちでも良い」 って言うだろう。

一部のナード層は、 「実行速度が」「メモリ消費量が」 とか言うかも知んないけど
未だにIEのシェアが6割も有る様に、多数のユーザはそこまで気にしない。
(強いて挙げるとすれば、古いOSを使ってるユーザだと
 .NET Framework必須な点が、若干面倒に思われるかもだが)

WinFormかWPFかってのは、ユーザ視点でどうこうじゃなく
開発側が、生産性を考えてどちらを使うか選ぶ物なんじゃないか?

549 :デフォルトの名無しさん:2010/11/13(土) 17:37:35
>機能もUIも完全に同一のアプリケーション
ならわざわざ間口が狭いWPFは使わんだろう。
何かしらWPFならではの機能を使って快適・高機能になるとかの理由で使うんじゃないの。
あとは将来webに持っていく可能性有りとかならSilverlightへの移植がしやすいとかで使うかもしれない

550 :デフォルトの名無しさん:2010/11/13(土) 17:40:29
>>547
ああ、あるある。
ComboBoxの中にDataGridが入ったりとか、マジでキモいUIが作れるよな…w

551 :デフォルトの名無しさん:2010/11/13(土) 17:49:42
コンテンツモデルが奇っ怪だよなあ
エッセンシャルWPF読むまで理解できなかった

552 :デフォルトの名無しさん:2010/11/13(土) 18:02:06
デザイナが謎のぬるぽで、
でもエラー0で普通に起動できて普通に動いて・・・

って2時間悩んだ末、VS再起動したら直った。
ふざくんな!

553 :デフォルトの名無しさん:2010/11/13(土) 18:07:03
http://msdn.microsoft.com/ja-jp/library/bb546934.aspx#WritingCodeforDesignTime
この辺の問題な気がする
相対パスが役立たずになるのはどうにかして欲しいものだ

554 :デフォルトの名無しさん:2010/11/13(土) 20:54:40
>>551
コンテンツモデルの柔軟さは認めるけど、結局見た目の組み合わせじゃろくなもんで
きないんだよなあ。コントロールの振る舞いは組み合わせじゃどうにもならないか
ら、実はあまり柔軟でも簡単でもない。WPFのコンボボックス一つとっても最初
はリストボックス使って実装しようとしたけど、結局スクラッチから作ってるし。ボ
タンの中にボタンみたいな、なんの意味もないもんしかできない。

555 :デフォルトの名無しさん:2010/11/13(土) 20:58:41
つまり吉里吉里でいいということですね

556 :デフォルトの名無しさん:2010/11/13(土) 20:59:15
まったく持ってその通りですわ

557 :デフォルトの名無しさん:2010/11/13(土) 21:17:50
見た目の組み合わせはともかくとして、
GridやStackpanelは便利だと思う

558 :デフォルトの名無しさん:2010/11/13(土) 21:30:03
コンテンツモデルはたまにとんでもない挙動をするからなぁ
結局部品の中身を理解していないと使いこなせない。

559 :デフォルトの名無しさん:2010/11/13(土) 21:48:23
超エリート集団が作ったものがそんな糞なわけがない

560 :デフォルトの名無しさん:2010/11/13(土) 21:53:31
Meもか?

561 :デフォルトの名無しさん:2010/11/13(土) 21:55:11
Meたんとか超可愛いじゃない

562 :デフォルトの名無しさん:2010/11/13(土) 22:13:38
xamlって#regionみたいに折りたたんだりできないの?

563 :デフォルトの名無しさん:2010/11/13(土) 22:16:28
タグ単位で折りたためるじゃないか

564 :デフォルトの名無しさん:2010/11/13(土) 22:25:06
できたー

565 :デフォルトの名無しさん:2010/11/13(土) 22:30:56
>>563
そうだけど、コメントにした瞬間に萎える

566 :デフォルトの名無しさん:2010/11/13(土) 22:33:54
>>554
ぼのぼののおとうさんみたいだな

567 :デフォルトの名無しさん:2010/11/13(土) 22:34:55
Meは2000の片手間に鼻くそほじりながら作ったんだろ。

カスタムコントロール作ってるけど、なんか作り方が独特な感じで難しい。
Xaml側でイベントハンドラ登録できないので、要素のName属性使ってコード側から
インスタンス取得、そしてハンドラ登録という流れになる。

処理を結びつけるのはコマンドでやれってことなんだろうけど、
コマンドは発生タイミングを細かく制御できないよね?
例えば、2桁入力できるTextBoxを横に何個も並べたとして、
2桁入力した時点で自動的に右にフォーカス移動させるようにしたいときって
イベントだとTextBoxChangedとか使えばいいけど、コマンドではどうするのか。

なんだかいつものWindowとかUserControlでやる書き方とは違って、
コード側の記述が増えてしまってる。

568 :デフォルトの名無しさん:2010/11/13(土) 22:38:14
>Xaml側でイベントハンドラ登録できないので

できるだろ

569 :デフォルトの名無しさん:2010/11/13(土) 22:38:57
>>567
クラックソフトでも作ろうとしてるの?

570 :デフォルトの名無しさん:2010/11/13(土) 22:41:05
>>568
どうやるの?
>>569
扱いやすいコントロールをつくろうとしてるんだけど、なんでそう思ったの?

571 :デフォルトの名無しさん:2010/11/13(土) 22:43:05
カスタムコントロールは単体で配布したりするような
ちゃんとしたコントロールを作るためのもの。WinFormsでもカスタムコントロールは
OnPaintオーバーライド必須だっただろ。

572 :デフォルトの名無しさん:2010/11/13(土) 22:45:50
>>570
ボタン作ってダブルクリックしてみ

573 :デフォルトの名無しさん:2010/11/13(土) 22:49:27
>>572
ResourceDictionaryに書いてるからデザイナ使えないよ。
<Button Click= って書いても候補すらでないしコードビハインドが無いから指定できない。
これはカスタムコントロールの話だからね。

>>571
やっぱエレガントに書くのは諦めたほうがいいかな。
WinFormsやったことないからどうなってたのかわからん。

574 :デフォルトの名無しさん:2010/11/13(土) 22:51:32
>>573
SilverLight4をインストールしたらできる

575 :デフォルトの名無しさん:2010/11/13(土) 22:54:14
>>574
流れ的にちょっと分かりにくいので何が出来るのか詳しく頼んます。
デザイナ使ってのデザイン?

576 :デフォルトの名無しさん:2010/11/13(土) 23:01:43
>>574
SilverLight 銀の光ワロタ


577 :デフォルトの名無しさん:2010/11/13(土) 23:07:22
Silverlight4 ToolkitにはWPFデザイナの更新が多数含まれてるので
Silverlight使わないとしてもWPF使うなら必ずインストールしましょう

578 :デフォルトの名無しさん:2010/11/13(土) 23:10:46
はーい

579 :デフォルトの名無しさん:2010/11/13(土) 23:17:07
>>577
無くても普通にインテリセンス機能してるけど?
例えばブラシのカラー候補とか出る
自前のプロパティなどは候補には出てこないけど
Silverlight4 Toolkit 入れたらそれもできるようになる?

580 :デフォルトの名無しさん:2010/11/13(土) 23:51:06
コントロールの削除はXamlのコードだけではできないですよね?

581 :デフォルトの名無しさん:2010/11/13(土) 23:52:52
インジケータ的なものならVisualStateManagerで隠す
データ項目に対応するものならバインド元のデータを消す

582 :デフォルトの名無しさん:2010/11/13(土) 23:56:56
それってどうするの?
List<string>にボタン名の一覧が入っていて
一覧から削除すると、そのボタンが削除されるといったこともできますか?

583 :デフォルトの名無しさん:2010/11/13(土) 23:58:43
できる
DataTemplateでググれ

584 :デフォルトの名無しさん:2010/11/14(日) 00:03:07
Listで出来るか?
ObservableCollectionじゃなくて?

585 :デフォルトの名無しさん:2010/11/14(日) 00:05:06
>>570
どうやったらできなかったの?

586 :デフォルトの名無しさん:2010/11/14(日) 00:05:15
List<T>では削除はできないけど別にそういうことを聞いてるんじゃないでしょう

587 :582:2010/11/14(日) 00:19:37
>>584でできました
ありがとう

588 :582:2010/11/14(日) 00:33:18
ああ、でも>>584はちょっと違う
データクラスで保持してるコレクションデータを
ObservableCollectionに毎回追加しないといけないから

やっぱりList<string>のボタン名でそれぞれのボタンで表示して
任意のボタンを削除するならDataTemplateですか?

589 :デフォルトの名無しさん:2010/11/14(日) 00:59:03
>>588
List をラップした INotifyCollectionChanged 実装クラス作るのがいいと思うけど、
面倒だからよく ObservableCollection にコピー持たせる。

モデルとかビューモデル側でコレクションに要素足したときに
即座にビューに反映されて欲しければ INotifyCollectionChanged 必須。

590 :デフォルトの名無しさん:2010/11/14(日) 01:19:59
>>585
カスタムコントロールのXamlはルート要素がResourceDictionaryだからハンドラ指定はできないはずだが。


591 :582:2010/11/14(日) 01:20:41
>>589
なるほどー、いろいろ試してみます
ありがとうございます

592 :デフォルトの名無しさん:2010/11/14(日) 01:30:04
最初からモデルかビューモデルに変更通知機能を入れとくのがベター
さすがにそんな上のレベルでListに依存するのは設計としてまずい

593 :582:2010/11/14(日) 01:38:57
>>592
ビューモデルにINotifyCollectionChangedを実装しても
List<T>.Addでは変更通知されないですね
List<T>クラスを自作してそこにINotifyCollectionChanged入れるしかないのかな

そうなるとObservableCollectionでプロパティ公開してデータクラスのList<T>の値を追加していく方が楽なのかな

594 :デフォルトの名無しさん:2010/11/14(日) 03:57:45
>>590
そうだった

595 :デフォルトの名無しさん:2010/11/14(日) 04:53:27
  <WrapPanel Grid.Column="0">
   <ItemsControl ItemsSource="{Binding Names}">
   <ItemsControl.ItemTemplate>
   <DataTemplate>
   <Button Content="{Binding}" />
   </DataTemplate>
   </ItemsControl.ItemTemplate>
   </ItemsControl>
  </WrapPanel>

上記だとただ縦に並ぶだけです

パネルのデータテンプレートってどうすればいいですか?
かれころ5時間ぐらいぐぐってもわかりません
助けて

596 :デフォルトの名無しさん:2010/11/14(日) 05:29:43
テンプレートってレベルでいいなら、ItemsPanel かな。

もっと柔軟に、レイアウト方法を自作したいなら
Panel クラス継承して MeasureOverride とかを自作。

597 :デフォルトの名無しさん:2010/11/14(日) 06:02:38
ItemsPanel使ってどうすればいいんでしょうか?
質問する前からその単語でもぐぐってます
ItemsPanelTemplateでもぐぐってるけど
同じようなコードが見つからないんです

前にテスト用に作った時はあっさり作れたのでメモってなかったのが失敗

598 :デフォルトの名無しさん:2010/11/14(日) 06:30:44
半年ggr

599 :デフォルトの名無しさん:2010/11/14(日) 07:06:02
こういうケチ臭いところが
世界的に見て日本のプログラマのスキルが低い所以なんだろうね
優秀なソフトはいつも海外
ゲームも海外

日本は自社製の糞重いフレームワークで時代遅れのゲームしか作れない

600 :デフォルトの名無しさん:2010/11/14(日) 07:25:42
http://homepage2.nifty.com/natupaji/DxLib/

601 :デフォルトの名無しさん:2010/11/14(日) 08:29:47
>>599
むしろ基礎すら理解できていないコード切り貼り魔がいることが原因だと思う。
5時間ググる前に何が足りないか3分考えろ。

602 :デフォルトの名無しさん:2010/11/14(日) 08:34:22
海外フォーラムで質問すれば〜

603 :デフォルトの名無しさん:2010/11/14(日) 14:38:39
>>593
データクラスでList<T>公開して
周りから弄繰り回すこと自体が間違ってるよ
実際に実装の変更に対応できてないわけで、publicフィールド公開してんのと一緒だぞそれ

604 :デフォルトの名無しさん:2010/11/14(日) 18:39:16
>>603
お前はデータクラスの値をVMで毎回コピーしてVに公開してんのか?

605 :デフォルトの名無しさん:2010/11/15(月) 07:58:04
コピーする必要なんか無いだろ。
頭使えよ。。。

606 :デフォルトの名無しさん:2010/11/15(月) 20:41:58
WPFは大きさを相対的にそろえられるのか

<Button Height="3*"/>
<Button Height="2*"/>
みたいに。

今までだとちょっとだけ面倒だったな

607 :デフォルトの名無しさん:2010/11/15(月) 22:22:57
ちょっとしかうれしくないw


608 :デフォルトの名無しさん:2010/11/15(月) 22:40:57
ちょっとした幸せでいいんだ

609 :デフォルトの名無しさん:2010/11/15(月) 23:10:23
Grid 使った auto の方が便利かも。
多言語対応したりフォントサイズ変更したりに強いし。

610 :デフォルトの名無しさん:2010/11/15(月) 23:12:35
何も考えずにprismを入れたらユーザーフォルダがレイプされた

611 :デフォルトの名無しさん:2010/11/15(月) 23:18:05
prismには勝てなかったよ…

612 :デフォルトの名無しさん:2010/11/16(火) 01:53:34
WPFはデザイナで変えた部分とXMALが前面に出されてるな。

古いWindows Formアプリケーションだと
デザイナで変更された部分は基本的に隠されててキモかった。

Button1.click += button1_Click;
この部分が隠されてて
button1_Click(object,eventargs)
だけ現れててマジきもい

613 :デフォルトの名無しさん:2010/11/16(火) 06:46:06
InitializeComponent(); 簡単に見れたじゃん。
WPFの方が別ファイルでコソコソ作られててキモイ。

614 :デフォルトの名無しさん:2010/11/16(火) 07:08:07
>>613
WinFormsも別ファイルだろ

615 :デフォルトの名無しさん:2010/11/16(火) 07:27:20
隠されてはないだろ。

616 :デフォルトの名無しさん:2010/11/16(火) 08:01:22
InitializeComponent();は作成順序で不具合でたりするから
直接弄れるWPFのが便利

617 :デフォルトの名無しさん:2010/11/16(火) 10:24:09
WPFの隠し方は異常

618 :デフォルトの名無しさん:2010/11/16(火) 11:04:03
>>617
どこが隠蔽されてるって?XAMLが理解できないって話か?だとしたらお前が悪いw
あれは宣言型言語でオブジェクト ツリーを構築しているだけ。

全てWinFormsに似た等価な手続型言語で表すことができるが、
誰もやろうとしないのはそれがメンテナンス性を著しく損ねてしまう結果に終わると知っているから。

ま、WPF使った事ない人は表面だけ見て隠蔽されてるように感じるのだろう。

619 :デフォルトの名無しさん:2010/11/16(火) 11:21:09
いきなり煽りから本題に入るとは恐れ入ります。
プログラミングにどっぷりつかってる人間ってコミュニケーション能力低いってよく言われるが
こういうことなのでしょうな。

620 :デフォルトの名無しさん:2010/11/16(火) 12:18:55
まあおちつけ

621 :デフォルトの名無しさん:2010/11/16(火) 13:38:02
XAMLいい
最初、C#の文法だけでなくこっちも覚えなきゃならないのかよ
とか思ってたら案外簡単だった。
<Button Height="200">
みたいに書けばいいだけみたいだ。
むしろButton button1=new Button();button1.Height=100;
とかやるより簡単かもしれんね。

622 :デフォルトの名無しさん:2010/11/16(火) 13:51:17
その程度で全部済ませられるなら誰も悩まない

623 :デフォルトの名無しさん:2010/11/16(火) 13:58:12
ToggleButtonとContextMenuの組み合わせで、
トグルのIsCheckedとメニューのIsOpenをバインドして、表示させることはできたけれど、
右ボタンで、通常通りポップアップさせたときにはContextMenuService.Placementで指定したならびになるのに
左ボタンで、バインディング通して表示させたら、マウスカーソルの位置にポップアップされてしまう
どうすればいいの? プログラム書いたらすむんだろうけど

624 :デフォルトの名無しさん:2010/11/16(火) 14:01:52
拡張マークアップで
何じゃこの気持ち悪い書式はー!!
とプリプリした。

625 :デフォルトの名無しさん:2010/11/16(火) 14:23:21
>>619
煽りだけで本題書いてないwww

626 :デフォルトの名無しさん:2010/11/16(火) 18:05:23
TabControlのItemTemplateってどこに影響するのん?
いろんなサンプル見てると、閉じるボタンを付けたり、各タブに関係しそうなんだけど、
じぶんでちっちゃいコード書くとなんにも変わらない

627 :デフォルトの名無しさん:2010/11/16(火) 18:17:28
>>626
TabControl.ItemsSourceにバインディングしてる?

628 :デフォルトの名無しさん:2010/11/16(火) 18:51:44
バインディングしたらできたよ、ありがとう

629 :デフォルトの名無しさん:2010/11/17(水) 02:43:45
コントロールのTextBlockとLabelってどう違うんだろう
ただ文字表示するだけでしょ?ほとんど同じに見えるんだが
何が違うの

630 :デフォルトの名無しさん:2010/11/17(水) 03:35:51
テキスト描画系のコントロールの使い分けはこんなとこかな。MSDNに全部書いてある。

Labelはコントロールの説明用。
アクセスキーを設定して他のコントロールにフォーカス移したりできる。

TextBlockは少量のテキストをUIに表示するための物。
1行の表示に最適化されているけど数行まで高いパフォーマンスを発揮する。

数行以上のテキストを表示する場合はFlowDocumentを使う。(下に行くほど多機能で重い)
FlowDocumentScrollViewer スクロール表示
FlowDocumentPageViewer 1ページ単位のスクロール
FlowDocumentReader ユーザが表示モードを切り替える場合に使う

---
この辺は低レベルで滅多に使わないけど
Glyphs と GlyphRun を使用してグリフ レベルでテキスト コンテンツを生成するのが最速。
書式指定された文字列を描画したいならFormattedTextが適している。

631 :デフォルトの名無しさん:2010/11/17(水) 03:40:59
WPFで作ると倍以上時間がかかるな
慣れたらもっと早くなるのか・・・?
保守は楽だけど、作るまでが大変

やっぱりコンソールアプリが最強だな

632 :デフォルトの名無しさん:2010/11/17(水) 04:15:11
WPFだとVisual Studioのプロパティのとこに
説明が書いてないし
タイマーコンポーネントとか
OpenDialogやSaveDialog
みたいな便利なコンポーネントも標準でついてないんだね。
残念

633 :デフォルトの名無しさん:2010/11/17(水) 05:37:20
>タイマーコンポーネント
そもそも非UIデザインのコントロールなのに存在してたのがおかしい。(WM_TIMERの大義名分はあったけど)
UIスレッドで処理するならDispatcherTimer

>OpenDialogやSaveDialog
それは標準である。
Microsoft.Win32.OpenFileDialog
Microsoft.Win32.SaveFileDialog
.NET3.5まではXP風のクラシックスタイル、.NET4はVista風の新しいスタイル。
.NET3.5でVista風スタイル、.NET4でXP風スタイルを使いたい場合はWinFormsのDialog

WPF使ってるのにWinFormsのアセンブリから読み込むのはいい気分じゃないけど、同じのを再定義されるよりは遥かにマシだな。

634 :デフォルトの名無しさん:2010/11/17(水) 11:46:17
LabelのContentの内容を、バインドしてるbool値の値によって変更するにはどうすればいいんでしょうか?

例えば、VM上で公開しているbool値のプロパティ IsEnableとバインドしているとして、
IsEnableがTrueの場合:  Label Content="可能"
IsEnableがFalseの場合: Label Content="不可能"
といったことがしたいです。

TriggerかDataTriggerを使えばできそうなんですが、書き方がよくわからず、Intellisenseに怒られてばっかりで。

635 :デフォルトの名無しさん:2010/11/17(水) 11:46:47
意図的な空白ってなんだよ…

636 :デフォルトの名無しさん:2010/11/17(水) 12:20:52
>>634
普通にDataTriggerの中にSetter入れて文字列変更できるはずだけど
そういう可/不可みたいな一般的なものだったらIValueConverter実装してもいいと思う
その方が使いまわしが楽

637 :デフォルトの名無しさん:2010/11/17(水) 16:13:40
リソースとスタイルの違いがよくわからん
x : Key = "MyButton" TargetType = "Button"
みたいなx :keyいうのがついたらリソース
つかないで
TargetType = "Button"だけならスタイル
でいいのか?

638 :デフォルトの名無しさん:2010/11/17(水) 16:44:11
何でそんな偉そうなの。

リソースは最初に用意しといて後で使い回しましょう、って奴で
スタイルはプロパティの設定のセット。比較するのがそもそもおかしい。
で、エスパーレスすると、

x:Keyつかないと<Button>全部に適用
x:Keyついたら<Button Style="{StaticResource キー}"> だけに適用

639 :デフォルトの名無しさん:2010/11/17(水) 17:33:18
x:KeyはCSSでいうところのIDみたいなもんか

640 :デフォルトの名無しさん:2010/11/17(水) 17:36:17
というかXAMLはhtml+CSS関連の技術の応用だからなあ・・・

641 : ◆Jzt/EX0TGY8T :2010/11/17(水) 19:25:44
>>634
>>637
おれも2週間前まではそんな感じだったけど
もうマスターしちゃった
デリゲートも完全に理解した

>>640
未修得の技術を教えるのに未修得の技術を例にしても意味がない

642 :デフォルトの名無しさん:2010/11/17(水) 19:45:00
そうでもない

643 :デフォルトの名無しさん:2010/11/17(水) 19:50:39
なんであいつは未だにコテなの?
スキルもないのに自己顕示欲は人よりも強いの?

644 :デフォルトの名無しさん:2010/11/17(水) 19:59:41
ずっとコテでいてくれたほうが助かるよ
いつ変な吹き出し方してくるか分からんし判別出来た方がいい

645 :デフォルトの名無しさん:2010/11/17(水) 21:25:51
NG用にコテ付いてる方が便利
まぁコテなくてもすぐ判別できるぐらい鬱陶しいけどなw

いつも変わらぬアホさに安心感すら覚えるようになってきた。
人並みの頭はないけど少しは身に付けて前進している点は評価したい。
こんなのでも使いもせずに見当違いの所を叩いてる連中よりは遥かにマシ

646 : ◆Jzt/EX0TGY8T :2010/11/17(水) 21:42:11
初心者のみなさんはまず沢山のサンプルを見るとこだね
なぜそのようにしているのかひとつひとつ調べていくこと
そうすれば今の俺みたいにWPFマスターになれる

俺の作り方はまずコンソールアプリを作る
ロジックだけに集中するため
そしてどうしてもコンソールじゃ足りないGUI部分が見えてくる
そしたらそのロジックを利用してWPFでGUIを作る
このアプローチはWPFに最適だと思う
Winフォームの場合、その手軽さからまずGUIを作りながら
いろいろイメージしていって、データやコントロールするクラス
を作ったりするだろうけど、WPFではおすすめしない

WPFではまず、データ構造とロジックから作り始めた方が効率がいい
簡単なツールの場合はWPFが必要ない場合が多いしね。

647 :デフォルトの名無しさん:2010/11/17(水) 21:44:07
いいから素人は評価なんて下さずベット勉強しましょうね^^;

648 :デフォルトの名無しさん:2010/11/17(水) 21:46:31
さすがシムシティもどきの表示部分だけ作ってた人のいうことは違うなあ

649 :デフォルトの名無しさん:2010/11/17(水) 22:47:35
>>631
コンソールと比べんなw

まあ、マニュアル作らず使ってもらえるとか、
たいていの人でも触れるとかそういう足かせはめるとコンソールの方がかえって楽だけど。

650 :デフォルトの名無しさん:2010/11/17(水) 22:47:53
あっ逆、そういう足かせあるとWPFの方が楽。

651 :デフォルトの名無しさん:2010/11/17(水) 22:50:16
実際WPFで作られたソフトってほとんどないよね

652 :デフォルトの名無しさん:2010/11/17(水) 23:11:06
まだだ、まだこれからだ。

653 :デフォルトの名無しさん:2010/11/17(水) 23:19:53
「まだこれから」のまま消えていった技術なんて数知れずだがなw

今気がついたが、ComboboxにAllowDropを設定したけど縁にしかdropできない…
PART_EditableTextBoxにもAllowDropを設定しろってことかw

654 :デフォルトの名無しさん:2010/11/17(水) 23:20:36
Microsoftが言うにはWPFは
「かっこいい外観」が特徴の一つらしいが
それ使うのはExpress Brendとかいう70000円もするソフト必要らしいな。
単純な外観のならVisual Studioでもいいけど、3D表示やあにめーしょん駆使しまくって派手なソフトは
きついらしい。

655 :デフォルトの名無しさん:2010/11/17(水) 23:25:24
そりゃまあ、対抗製品がAdobeスイートだっけ?
Adobeのひとしきり入ってるやつだから。

656 :デフォルトの名無しさん:2010/11/17(水) 23:26:29
VS持ってるならもっと安く買えるよ。
それこそExpressですら対象だから定価は罠。

657 :デフォルトの名無しさん:2010/11/17(水) 23:27:33
アニメーションはVisual Studioだけでもどうとでもなるだろ。

658 :デフォルトの名無しさん:2010/11/17(水) 23:28:29
どうとでもという言葉の意味が、10倍とか時間かけてもいいというみなら
確かにどうとでもなる。

659 :デフォルトの名無しさん:2010/11/18(木) 00:01:08
かっこいい外観なんて飾りさ

660 :デフォルトの名無しさん:2010/11/18(木) 00:17:29
かっこいい外見なんて飾りです
上の人はそれがわかってるから買ってくれんのです

661 :デフォルトの名無しさん:2010/11/18(木) 00:18:20
でもどーせ使うならかっこいいほうがいいよね。
MSもそう言ってる。

662 :デフォルトの名無しさん:2010/11/18(木) 00:35:06
二つのウィンドウを持ったWPFどうやんの?
まずVSでWPFアプリケーション作成して
MainWindowとかいうのが出てくるから、XAMLでName="MainWIndow"
に変更
次にSHIFT+CTRL+Aで新しい項目→WPFウィンドウ
これで二つ目のWPFのほうにName="SubWindow"
ってやって
MainWindowのコンストラクタの部分に
SubWindow.Show()
みたいに書いても、SubWIndowは存在しません
とか言われる。

663 :デフォルトの名無しさん:2010/11/18(木) 01:00:06
>>661
かっこよくて使いやすいならそれがいいね。

>>662
子ウィンドウ作成
SubWindow subWnd = new SubWindow();
subWnd.Owner = this;//親ウィンドウのインスタンス
subWnd.Show();

664 :デフォルトの名無しさん:2010/11/18(木) 01:06:23
親の初期化が完了してないと子は作れない(コンストラクタでは×)からLoadedイベント以降に作るように

665 :デフォルトの名無しさん:2010/11/18(木) 02:19:17
PowerShell ISEってやつがWPFっぽい

666 :デフォルトの名無しさん:2010/11/18(木) 03:05:37
データバインディングのXMALの書き方について教えてくれ
テキストボックスとボタンを配置して、テキストボックスに書かれている内容が
ボタンのContentになる、よくあるサンプルみたいなもの作ってみたんだが。

<TextBox Name="T"/>
<Button Content="{Binding ElementName="T" Path="Text}"/>

こんな感じにしてみたんだが、エラーになる。
<Button>
<Binding ElementName="T" Path="Text"/>
</Button>

ってやったら、ちゃんと動いた。
データバインディングの{Binding なんちゃら}
って直接書かずにプロパティ要素構文として書かないとダメなの?

667 :デフォルトの名無しさん:2010/11/18(木) 03:13:27
コンパイル通らない単なる構文ミスじゃねぇか…
<Button Content="{Binding ElementName=T, Path=Text}"/>

668 :デフォルトの名無しさん:2010/11/18(木) 03:18:40
マジだ
なぜ
<Button>
と</Button>の間にBindingを入れると
ElementName="T"
みたいに"が入ってるのに
Content=で直接書いたら"を入れちゃいけないんだ?
変な規則だなー

669 :デフォルトの名無しさん:2010/11/18(木) 03:29:50
なぜって…C#すら使えないとは思わなかった。

二重引用符入れ子にすんなよw
文字列の中に二重引用符入れたいなら(XAML,C#に限らず)普通エスケープするでしょ "\""
引用符を入れ子にしたいなら二重引用符["]の中に引用符[']入れるってのもよくある一般的な方法。

なんでこんな初歩的な事に気が付かないんだw

670 :デフォルトの名無しさん:2010/11/18(木) 07:23:04
ある程度慣れたらBlend買え

いろいろ捗るぞ

671 :デフォルトの名無しさん:2010/11/18(木) 09:51:57
>>668
XML だからしょうがないだろ。
あと、Content="{Binding ...}" の方はマークアップ拡張、
<Binding ... /> の方は要素構文で、XAML のパース方法が違う。

672 :デフォルトの名無しさん:2010/11/18(木) 16:32:12
Visual Studio2010の
XAMLのコードエディタがバグや使いづらい点が多すぎる
ダメだこりゃ

673 :デフォルトの名無しさん:2010/11/18(木) 18:33:56
バグや要望あったらぜひ報告してやってくれ

674 :デフォルトの名無しさん:2010/11/18(木) 20:04:58
>>668>>669
WPFより先にXML覚えれ

675 :デフォルトの名無しさん:2010/11/19(金) 00:45:10
Visual Studio 2008 では俺の作った ColorPicker コントロールが
表示されない。2010 使いたいよい

676 :デフォルトの名無しさん:2010/11/19(金) 14:45:47
Visual C#のXAMLのコードエディタで
複数の同じようなコントロールがあるときそのコード上の配置を同じにするにはどうやればいい?

<Rowdefinition Height=なんちゃら name=なんちゃら VerticalAlignment=なんちゃら・・・ その他/>
<Rowdefinition Name=なんちゃら margin=なんちゃら VerticalAlignment=なんちゃら name=なんちゃら 他/>

みたいなぐちゃぐちゃしたコードになってなんとなく気持ち悪いんだけど上と下を自動整理するにはどうしたらいい?
そういう昨日ないの?

677 :デフォルトの名無しさん:2010/11/19(金) 14:50:13
>>676
配置を同じって、どういう意味だ。同じ箇所にまとめるということなのか。
同じ座標に重ねて配置するという意味なのか。
気持ち悪いけど上と下を自動整理ってなんだ。

質問が曖昧過ぎる。

678 :デフォルトの名無しさん:2010/11/19(金) 14:51:38
意味がわからん

679 :デフォルトの名無しさん:2010/11/19(金) 14:56:53
RowDefinitionの属性の記述順を、自動一括整理して欲しいってことだろ

680 :679:2010/11/19(金) 14:57:53
やりかたは知らんけど

681 :デフォルトの名無しさん:2010/11/19(金) 15:05:46
XMLの整形機能はついてるけど、記述順は変わらないし、1行1属性になってしまうので、
外部ツールにXML整形ツールでも登録した方がいいと思う。

682 :デフォルトの名無しさん:2010/11/19(金) 15:06:46
何か正しい順番でもあるのか?

683 :デフォルトの名無しさん:2010/11/19(金) 15:21:10
属性の自動整理できないのか
自分でやるしかないのかー
面倒だな

<Width="100" Name="ABC" Height="200"/>
<Name="DEF" Height"300" Width="200"/>
みたいな書き方マジきもい
一行が短いならまだいいけど、長いとキモ過ぎる

684 :デフォルトの名無しさん:2010/11/19(金) 16:21:58
>>683
要素名と属性って次元の違う話なんだが

685 :デフォルトの名無しさん:2010/11/19(金) 20:37:14
まあ、XAML 手書きをメインにやるか、デザインツール使うなら生成される XAML 気にしないかの2択。

686 :デフォルトの名無しさん:2010/11/19(金) 21:15:05
>>683
その例がきもいわw

687 :デフォルトの名無しさん:2010/11/19(金) 21:36:25
まあ何だ、自分ひとりでこだわる分にはいいが
プロジェクトで「誰だ!せっかく俺が整理したソースを!」とか言い出さんようにな

688 :デフォルトの名無しさん:2010/11/19(金) 22:49:08
デザイナでカットペーストすれば一応辞書順になる

689 :デフォルトの名無しさん:2010/11/19(金) 23:07:11
>>687
言うだろJK。書き方が混ざるとミスが入りやすくなる。
他人がコードをいじる時は自分のスタイルに合わせてもらい、
他人のコードをいじる時はそのスタイルに合わせる。

690 :デフォルトの名無しさん:2010/11/20(土) 00:27:13
プロジェクトの規約で「揃える事」と決まってればそうすればいい。
そうでなきゃ属性の順番なんぞがそろってるだとか気にも留めないから
その人なりのスタイルだとなんて認識してもらえない

そんなくだらん事で自分なりのスタイルとか主張するな。

691 :デフォルトの名無しさん:2010/11/20(土) 16:35:01
マウスが乗ったら「あいうえお」と表示されるボタンを作ろうとした

<Button>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Content" Value="あいうえお"/>
</Trigger>
</Style.Triggers>
</Style>
</Button>

これやったら、ButtonのContentがSystem.Windows.Styleって表示されて
マウスのっけてもかわらない

どこが間違ってる?

692 :デフォルトの名無しさん:2010/11/20(土) 17:24:13
うん

693 :デフォルトの名無しさん:2010/11/20(土) 18:10:54
<Button>

<Button.Style> // ButtonのStyleプロパティが
<Style TargetType="Button"> // Styleクラス

</Style>
</Button.Style>

Buttonの子はContent

</Button>

694 :デフォルトの名無しさん:2010/11/21(日) 20:44:39
TextBlockの下線の位置って変えられますか?
フォントにもよるけど、ニコニコという言葉に下線を加えると、
字と下線が重なってしまって、非常に読みづらくなってしまいます。

695 :デフォルトの名無しさん:2010/11/21(日) 20:59:24
TextDecorationでPenOffset調整するとか

696 :デフォルトの名無しさん:2010/11/21(日) 21:12:08
まさにやりたかったことができました。
ありがとうございました。

697 :デフォルトの名無しさん:2010/11/22(月) 00:16:38
世の中には無料でも高度なプログラミングができるコンパイラや開発環境、ツールが出回っている。
C言語コンパイラ、Visual C#、Ruby

それでもプログラミングは全然はやることはない。
WPFなんて素晴らしいものなのに、注目されてなさすぎる。

698 :デフォルトの名無しさん:2010/11/22(月) 00:23:06
作る必要がないほどあらかたそろってるからな
みんな一体何を書いてるのだろうと時々不思議になる

699 :デフォルトの名無しさん:2010/11/22(月) 00:33:18
>>697
一般的に普及しているWindowsだと、プログラミングの第一歩の敷居が高すぎるんだと思われ。
開発環境があって、書籍があっても、辞書一冊を渡されて「この本を翻訳しなさい」と言われてる状態だからなぁ。

SmalltalkやEmacsみたいに、ベースである程度使える環境に機能を付け足していくって言う方が今は敷居が低そうだ。
あと、最近の環境はプログラムのエントリーポイントが判りづらいのが多い…

700 :デフォルトの名無しさん:2010/11/22(月) 02:31:49
プログラミングの第一歩なんてちょっとした作業を自動化するためのバッチファイルでいい。

701 :デフォルトの名無しさん:2010/11/22(月) 04:38:26
>あと、最近の環境はプログラムのエントリーポイントが判りづらいのが多い…

関数型言語のことですねわかります

702 :デフォルトの名無しさん:2010/11/22(月) 16:20:55
Rubyとかなんであんなに初心者向けの本が出てるのかわからん
実装剥き出しのオブジェクト指向でどう考えても初心者向きじゃないし
多くの初心者がプログラムと聞いてイメージするGUIアプリ開発には使い物にならんのに

703 :デフォルトの名無しさん:2010/11/22(月) 17:03:30
本出すと売れるからだろうな

704 :デフォルトの名無しさん:2010/11/22(月) 17:15:19
XAMLのほうで、テキストを結合する方法を教えて?

person.name="仙石";
のとき

<Button.Content="私は"+person.name+"です"。/>

私は仙石です
person.nameが"管"に変わった瞬間
私は管です
って表示されるみたいなことやりたいんだけど。

705 :デフォルトの名無しさん:2010/11/22(月) 17:38:47
StringFormat ※.NET3.5 SP1〜
以前はちょっとした変換にもコンバーターが必要になって面倒だった。
MultiBindingと組み合わせれば姓・名が別々になっててもXAMLだけで結合できる。

706 :デフォルトの名無しさん:2010/11/22(月) 17:41:40
<Button.Content="{Binding Path=name, StringFormat=私は{0}です。}"/>

707 :デフォルトの名無しさん:2010/11/22(月) 17:54:55
すげー

そういうTipsみたいなのってどこに書いてるの?
WIndows Formだとテクニック集みたいなページがいっぱいあるけど
WPFは小技/裏技みたいなページがないから困る・・・

708 :デフォルトの名無しさん:2010/11/22(月) 19:43:34
VSでバインディング書いてたらインテリセンスにStringFormatを見つける→何これ?→MSDN

あちこちのブログでも取り上げてあるから、検索してたらその内たどり着くんじゃないか。

709 :デフォルトの名無しさん:2010/11/22(月) 19:58:08
WPFのTips集って作りづらいかもしれない。
何やるにしてもBindingやナンチャラTemplateでお好きにどうぞという話になるので、
結局その辺から勉強することになる。

710 :デフォルトの名無しさん:2010/11/22(月) 20:14:20
そうかー
テンプレートを利用すれば
なんかキモイもの作れるね

ボタンにTextBlockをテンプレートに組み込んで
テキストボックスのようなボタンを作ったり。

711 :デフォルトの名無しさん:2010/11/22(月) 21:07:14
>>697
wpfは個人がちくちく作るツール向けの開発者ツールなんかじゃないし。
winformの時代もonpaintをオーバーライドしてなんかするなんて滅多に無かっただろ?
wpfの胆は見た目周りは実はどうでも良くて、MVCをきちんと分けるためのインフ
ラが揃ってることだと思うんだけどなあ。

712 :デフォルトの名無しさん:2010/11/22(月) 21:21:48
そこまでは素人だよ
玄人になると見た目周りにこだわりを持つようになる

713 :デフォルトの名無しさん:2010/11/22(月) 21:24:19
本当のプロは拘りなんてないよ。
要求されたことを完璧にこなすだけ。

714 :デフォルトの名無しさん:2010/11/22(月) 21:42:19
WPFはレイアウトに関するプロパティや機能が多すぎワロタ

715 :デフォルトの名無しさん:2010/11/22(月) 23:00:25
Microsoftは見た目にこだわるからね

office製品は昔はヘルプがイルカだった。
検索したい文字を入力してください
とかいう味気ないダイアログボックスを出すよりイルカのほうがよかったんだろう。
office 2007からも
今までのメニューバー
(ファイル 編集 表示とかいう文字ベースのやつ)を完全に撤廃し、
今までのやり方や操作性を犠牲にしてまでリボンとかいうグラフィカルな項目にした。

Microsoftにとっては見た目が非常に大事なんだろう。

716 :デフォルトの名無しさん:2010/11/22(月) 23:25:53
見た目は重要だからね

717 :デフォルトの名無しさん:2010/11/22(月) 23:38:14
リア充クラスはイケメンクラスを継承した。
俺はイケメンクラスを継承してないのでリア充になれなかった。

俺も顔のテンプレートを修正したい。

718 :デフォルトの名無しさん:2010/11/22(月) 23:40:40
イケメンクラスを包含すればいいじゃない。


お前の心の中にな!

719 :デフォルトの名無しさん:2010/11/22(月) 23:41:29
データバインディングわかんねぇえええええええええ

dataContextとかいうオブジェクト型の特殊な変数があって
そこになんか代入すればいいんだな!?

じゃあバインディングしたいデータがいっぱいあったらどうするんだ!?
dataContextはひとつしかないぞ!

なんか方法あるらしいが、わかんねええええええええええ

720 :デフォルトの名無しさん:2010/11/22(月) 23:50:50
Resultが1個しかなかったらSQLでテーブル1個にしかアクセスできないか?
結合があるんだそんなわけあるめえ

721 :デフォルトの名無しさん:2010/11/22(月) 23:53:04
バインディングしたいデータを詰め込んだクラス(ViewModel)を作ってDataContextに突っ込めばいい。

>>715
UXを重視した結果

722 :デフォルトの名無しさん:2010/11/23(火) 00:35:34
>>721
殺意をMicrosoftやOffice自体ではなく、
それと無関係なイルカに向けるという高度なUX重視判断の結果だなw

723 :デフォルトの名無しさん:2010/11/23(火) 00:37:12
| 何について調べますか?
| ┌────────────┐
| | お前を消す方法       |
| |                   |
| └────────────┘
| [ オプション(O) ]   [ 検索(S) ]
|
`──────────┐ ┌───
           , '´l,  ..| ./
       , -─-'- 、i_  |/
    __, '´       ヽ、
   ',ー-- ●       ヽ、
    `"'ゝ、_          ',
      〈`'ー;==ヽ、〈ー- 、 !
       `ー´    ヽi`ヽ iノ
                ! /
              r'´、ヽ
              `´ヽノ

724 :デフォルトの名無しさん:2010/11/23(火) 00:51:01
>>717
おまいら、よくわかってるじゃん

725 :デフォルトの名無しさん:2010/11/23(火) 01:30:01
>>722
MS擁護派の俺でもイルカは邪魔だと思うわw

726 :デフォルトの名無しさん:2010/11/23(火) 01:37:31
WPFならofficeのイルカみたいなのも簡単に作れる♪

727 :デフォルトの名無しさん:2010/11/23(火) 01:50:32
XPまでだとリージョンつかわないとパフォーマンス落ちてたんだよな
Vistaからその辺気にしなくてよくなった

728 :デフォルトの名無しさん:2010/11/23(火) 02:09:24
XAMLが楽だと思ったのはコントロールが継承できるとこだな。依存プロパティっていうんだっけ?
メニューなど入れ子になってる場合、親メニューをいじるだけでいいから楽チンだわ

729 :デフォルトの名無しさん:2010/11/23(火) 02:12:01
>>725
まあでも、擁護派・アンチ問わずありとあらゆる方面から「要らない」と言われた結果、
次バージョンでとっととイルカ消してくるのはいいところだと思う。

730 :デフォルトの名無しさん:2010/11/23(火) 02:29:27
>>723
なつかしいな

731 :デフォルトの名無しさん:2010/11/23(火) 02:46:08
お前らなぁ、言われる方の身にもなってやれよ!
>つぶやき始めてから、これまでにいただいたつぶやきで、一番多いのが「お前を消す方法」。。。たしかに、いろいろと言われてたのは知ってましたが。。。キュッ #saeko2010

732 :デフォルトの名無しさん:2010/11/23(火) 03:11:17
複数のWindowでデータバインディングするのはどうやんの?
WPFアプリ作った時に最初に出てくるMainWindowにテキストボックスが二つあって
その両方がバインドするやり方はわかった。
binding elementname=textbox path=text
みたいにやればいいだけみたいだ。これは簡単だった。

じゃあMainWindowの他に、CTRL+SHIFT+Aで新しい項目→WPFウィンドウ(名前はWindow1)を作り
その二つ目のWindow1にテキストボックスを配置し
Window1.TextBoxとMainWindow.TextBoxをバインドさせる方法はどうやればいいか教えてくれ。

733 :デフォルトの名無しさん:2010/11/23(火) 03:16:25
DataContextかBindingのSourceに共通のVMを入れてプロパティ経由で

734 :デフォルトの名無しさん:2010/11/23(火) 08:32:56
いまだに冴子先生が現役です・・・

735 :デフォルトの名無しさん:2010/11/23(火) 12:17:42
VS2010のメインレイアウトって、DockPanelかGridPanelに見せかけて、実はCanvasPanel?

736 :デフォルトの名無しさん:2010/11/23(火) 12:22:45
Grid だけども、Margin を駆使して Canvas っぽくレイアウトしてる。

一応、Grid のセル内の相対 Margin になるので、
Canvas よりは幾分かウィンドウサイズ変更に強いと思う。

737 :デフォルトの名無しさん:2010/11/23(火) 17:04:07
ListViewに4カラムで30行表示しただけなのにスクロール重すぎワラタ。内容は全部固定Textなのに。
一体何がどうしてこんなことになったのか分からないからどうやって改善すればいいのやら。

738 :デフォルトの名無しさん:2010/11/23(火) 17:09:50
2000行くらいになってくると重量感じるけど
30行だと何かやらかしてるとしか思えんな

739 :デフォルトの名無しさん:2010/11/23(火) 18:52:10
>>735
CanvasPanelというコントロールは御座いません。

740 :デフォルトの名無しさん:2010/11/23(火) 19:14:20
WinFormだけど,OwnerDrawの中でtrycatchで例外発生しまくりでlistviewが劇遅になったことならあるよw

741 :デフォルトの名無しさん:2010/11/23(火) 19:39:43
ばか?

742 :デフォルトの名無しさん:2010/11/23(火) 19:58:07
はい、あなたはばかです。

743 :デフォルトの名無しさん:2010/11/23(火) 20:40:55
VS2010の作業領域の背景って、グラデーション+ドット模様になってるじゃん
ワンパスで描画できるの?

744 :デフォルトの名無しさん:2010/11/23(火) 20:43:50
>>743
どういうのを言ってるかわからんがwinformでもグラデーションブラシを使えば2色の合成は簡単だけど

745 :デフォルトの名無しさん:2010/11/23(火) 20:44:22
テスト的にMとVMとVを分けてホイホイっと表示させるのは簡単だけど
いざ実際にアプリ作るのは設計がむじゅいね。
以前作ったFORMアプリを移植しようとしたらイベントぐちゃぐちゃで我ながら萎え萎え。
がんばる。

746 :デフォルトの名無しさん:2010/11/23(火) 20:57:22
>>745
MVVMは実際に設計すると非常に悩ましい。
 ・Command内の処理からダイアログをどうやって出そうか?
 ・フォーカス制御にはViewのインスタンスが必要じゃん
 ・値の検証はMでするの?VMでするの?
 ・"最大値"、"最小値"のようなパターンってどうやってエラーだすのよ
 ・数値入力フォームにアルファベットを入れたらどこでどうエラー処理する?
 ・一つのMで複数のVMが居る場合どうすんのよ、コレ
こういう綺麗にMVVMが当てはまらない場所全てで頭を抱え込むことになる。ガンバレ。

747 :デフォルトの名無しさん:2010/11/23(火) 21:24:38
>746
・VMのダイアログをだすよ処理にViewからインジェクト。だすよというよりIConfirmとかそんな感じ。
・フォーカスはViewですればいい。Focusなどの状態自体がVM、Mまたーなら話は別だが。
・MがVMからしかいじられないならVMで。でないなら両方ヤッとけ。
・VMでエラー吐いて表示などなどViewでやっとけ。
・上と同様。
・Observerパターン使え。


748 :デフォルトの名無しさん:2010/11/23(火) 22:08:36
RoRみたいにガチガチじゃないから逆に書きにくい…

749 :デフォルトの名無しさん:2010/11/23(火) 23:38:55
タブ型エディタみたいなのってMVVMだとどういう構造になるの?
外枠を担当するMVVMセットがあって、さらにタブ毎にMVVMセットがあるような
モデル?

750 :デフォルトの名無しさん:2010/11/23(火) 23:52:49
タブの1個1個がドキュメントよね。
その上位に、ドキュメントマネージャー的なのが居るのかな。

ウィンドウ自体のVMがドキュメントマネージャー持ってて、
タブごとのVMがドキュメント持ってるって感じじゃないかな。

751 :デフォルトの名無しさん:2010/11/23(火) 23:54:18
>>749
Evernoteクライアントのversion 3をダウンロードして動かしてみれ。

752 :デフォルトの名無しさん:2010/11/24(水) 01:33:55
>>750
やっぱりそんな感じよね
WPF自体経験ないからうんうん唸る

>>751
あれは重かった…

753 :デフォルトの名無しさん:2010/11/24(水) 01:39:32
だいたい、ビューが階層的ならビューモデルも階層にすればOK。

754 :デフォルトの名無しさん:2010/11/24(水) 01:57:42
MVVMでオプション設定ダイアログを作りたい
オプション設定のVは作ったのだけど、この後どのようすればいいですか?
Vの起動方法とVの設定値の取得方法が想像つかないんですが

755 :デフォルトの名無しさん:2010/11/24(水) 02:01:15
>>754
従来のタブ切り替えみたいな方式じゃなくて、
XAMLらしくリンクとして実装してあげるといいだろうね。

756 :デフォルトの名無しさん:2010/11/24(水) 03:01:47
データバインディング

TextBox.Textと普通のプロパティをバインdする方法はわかったんだが
インデクサはどうやればいい?

たとえばLabeの文字を
str[i]とバインドして

str[0]="A";
str[1]="B";
str[2]="C";

i=0になった瞬間LabelがAになって
i=1になった瞬間B、i=2の瞬間C

みたいな感じ。
ValueCangeイベントのようなイベントで処理したり
なんとかタイマーで、0,01秒ごとにLabelのContentを変える
みたいな処理しかわからない

757 :デフォルトの名無しさん:2010/11/24(水) 03:06:10
string hoge
{
get{return str[i];}
}
をバインドする

iのsetterでhogeのpropertyChangedをおこす

758 :デフォルトの名無しさん:2010/11/24(水) 03:53:39
>>756
そもそも i の変更に合わせてっての自体やらない。

i の変化自体、たぶん、ListBox の SelectedIndex とかの変化と連動してる場合が多いから、
i を介さず、直接 SelectedItem をデータバインディングしてしまう方が早い。

↓コレクション走査パスの指定ってのもできるし。
http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_05/introwpf_05_02.html


759 :デフォルトの名無しさん:2010/11/24(水) 10:53:38
以下のxaml上のEventSetterをコードで書きたいのだが、書き方がわからない・・・

<Style TargetType="{x:Type ComboBox}">
<EventSetter Event="SelectionChanged"
Handler="SampleList_SelectionChanged" />
</Style>

動的にイベント有無を変更したいので、コードで書きたいのですが。


760 :デフォルトの名無しさん:2010/11/24(水) 19:45:24
そのまま書くだけだと思うけど
ルーティングイベントだけは〜〜Eventって名前の静的フィールド

761 :デフォルトの名無しさん:2010/11/25(木) 01:55:11
WPFいいなぁ
そろってるコントロールやパネルとかが優秀すぎて
XAML使ってもいいけど
仮に全部C#コードで書いたとしても別に問題にならない

762 :デフォルトの名無しさん:2010/11/25(木) 01:58:04
でもXAMLを知ればC#でなんでもやろうとは思わなくなるよ。

763 :デフォルトの名無しさん:2010/11/25(木) 02:05:10
XAMLって
プログラムの外観とロジックを分離させるために作った
みたいに書いてるけど
俺みたいな外観もロジックも一人で造らなきゃならないぼっちにとっても
勉強したほうがお得なの?

764 :デフォルトの名無しさん:2010/11/25(木) 02:11:53
>>763
というより、使わなきゃUIデザイナーの支援を受けられないんだから、嫌でも使うことになる。

765 :デフォルトの名無しさん:2010/11/25(木) 05:03:31
>>763
外観とロジックを分離することとぼっちは関係ないよ

766 :デフォルトの名無しさん:2010/11/25(木) 05:54:52
>763
宣言的にオブジェクトを配置するXAMLと、
手続処理を中心としたプログラムコード。
普通の静的なUIデザインには、前者の方が向いてるよね。


767 :デフォルトの名無しさん:2010/11/25(木) 06:01:04
WPFはまあ乱暴な言い方すればWinFormにブラウザコントロール貼り付けて
ローカルでhtml+css+javascript流し込んで実行してるような感じかな・・・

WinFormで凝ったGUIやると面倒だな〜->ブラウザコントロールが結構使えるなあ->WPFでいいじゃん
みたいな感じ

まー必要ない人には必要ないかもしれない

768 :デフォルトの名無しさん:2010/11/25(木) 06:07:55
>767
それはUIデザインのコーディングスタイルだけの話じゃないか?
WPFは強力なバインディング機構の方がキモだろ。

769 :デフォルトの名無しさん:2010/11/25(木) 06:52:41
xml自体がバインディング向けですしね

770 :デフォルトの名無しさん:2010/11/25(木) 07:23:37
でも、WPFは糞重いし、小規模なツール作るには手間がかかるだけ
UIデザイナー?そんな形態持ってる企業なんてない

771 :デフォルトの名無しさん:2010/11/25(木) 08:39:44
WPFが重いのはきっとMSがなんとかしてくれるよ。

きっと

772 :デフォルトの名無しさん:2010/11/25(木) 09:43:23
まだWPF重いのかよwww

773 :デフォルトの名無しさん:2010/11/25(木) 10:26:05
Boldフォント使うとすぐに字がにじむんだけど、どういうこと?

774 :デフォルトの名無しさん:2010/11/25(木) 13:55:39
WPFだとWndProcつかえんの?

775 :デフォルトの名無しさん:2010/11/25(木) 13:57:49
使える

776 :デフォルトの名無しさん:2010/11/25(木) 13:59:46
ふーん

777 :デフォルトの名無しさん:2010/11/25(木) 14:33:56
>>770
まだ小規模なツールでWinFormsより手間がかかると思ってる人居るんだ。
使ってから騒ぐ分だけコテハンのアイツの方がよっぽどマシだな。

778 :デフォルトの名無しさん:2010/11/25(木) 14:48:20
「オシャレなUIならWPF」とか言ってる奴もいるぞw

779 :デフォルトの名無しさん:2010/11/25(木) 14:51:07
いるいるw

780 :デフォルトの名無しさん:2010/11/25(木) 15:05:56
お前ら頭良すぎだな

お前らの脳味噌を俺の脳味噌にデータバインドしてくれよ

781 :デフォルトの名無しさん:2010/11/25(木) 15:19:00
それじゃちょっとこの音楽聴いといてくれるか
一万人分ぐらいの脳と繋がるから

782 :デフォルトの名無しさん:2010/11/25(木) 15:21:39
WPFでカスタムコントロール(Canvas継承)を作って、
Canvas上のControlに拡張プロパティを設定したいのだけどうまくいかない。

C#のIExtenderProviderにあたるWPFの機能ってなんでしょ?
DependencyPropertyでごちゃごちゃとやらないといけない?

783 :782:2010/11/25(木) 18:31:49
AttachedPropertyBrowsableForChildren()で解決しました。

784 :デフォルトの名無しさん:2010/11/26(金) 03:10:23
グラフィックを半透明にしたり、画像の拡大縮小がきれいだったり

ゲームや簡易ペイントソフト作成用ですか

785 :デフォルトの名無しさん:2010/11/26(金) 04:07:37
XAMLのほうでは直接Width="100"みたいな定数しかできなくて
たとえばButton Width=button1.Height+30
みたいな足し算や掛け算を行ったりできないの?
こういうことしたかったらC#のコードでやらないと無理?

786 :デフォルトの名無しさん:2010/11/26(金) 04:28:26
まずやりたいことが、Gridなどのコンテナで実現できるか考えよう。
それでも無理ならバインドしてコンバーターで計算させるとかじゃね?

787 :デフォルトの名無しさん:2010/11/26(金) 09:01:28
キャンバスをEXCELのように多数のセルに分けて、それぞれ文字を入力させる。
で、フォームがリサイズされたらセルの大きさもその割合に応じて変わる。

こんなプログラムはWindows Formのほうがいいのかな?

788 :デフォルトの名無しさん:2010/11/26(金) 09:47:33
>>784
グラフィックきれい = ゲーム って発想やめようよ。
いわゆる可視化、見える化とかが有効とされるものならなんにでも応用効く。

>>785
コンバーター書いて Binding するか、
データコンテキストに渡した ViewModel 内で +30 するか。
どっちにしろ C# コード書くね。

>>787
リサイズへの追従とかそれこそ WPF 向きじゃない。

789 :デフォルトの名無しさん:2010/11/26(金) 09:52:22
ファイルのドラッグ&ドロップ部分を書こうとしているとこなんだけど
MVVMの場合イベントはすべてDeleteCommandを通して書くの?

790 :デフォルトの名無しさん:2010/11/26(金) 10:02:04
MVVMは質問してまでやることじゃない。
自分が無理なくやれる方法でやることが重要。

791 :デフォルトの名無しさん:2010/11/26(金) 10:16:04
ドラッグ&ドロップみたいなビュー内で完結してるものは
むしろビヘイビアで書く方がいいよ。

792 :デフォルトの名無しさん:2010/11/26(金) 10:31:21
ドラッグ&ドロップ部分はView.csで書いて
リストに追加された時にBindingで値を取得するってことでいいのかな

793 :デフォルトの名無しさん:2010/11/26(金) 12:41:13
MVVMの雛形を毎回作るのが面倒なんだけど
何か良い方法ないですか?
テンプレートみたいなものは自分で作れるんだっけ?

794 :デフォルトの名無しさん:2010/11/26(金) 13:42:47
その程度のことが面倒に感じるようなものにMVVM適用するのはどうかとおもうけど
必要ならPrism Template Packでも使えば

795 :デフォルトの名無しさん:2010/11/26(金) 13:45:03
Prismって何かバグがあったような気がするんだが

796 :デフォルトの名無しさん:2010/11/26(金) 14:09:36
>>794
なにそれ?

797 :デフォルトの名無しさん:2010/11/26(金) 21:02:09
何かバグはあるさ!

798 :デフォルトの名無しさん:2010/11/26(金) 22:58:04
>>793
テンプレートでできなくもない。t4 templateでぐぐると、いくつかmvvmのコード自動生成の作例が出てくる。
WPFはもっとコードの自動生成を取り入れないと普及しないだろうねえ。
イベントハンドラのスタブをタブキー二回で作ってくれるぐらい簡単に。

799 :デフォルトの名無しさん:2010/11/27(土) 01:28:16
xamlにインラインコードが使えるようにならないかな…

800 :デフォルトの名無しさん:2010/11/27(土) 07:31:38
VMのプロパティはEXCELとか正規表現とかでなんとか生成できるレベルだけど、
DependencyProperty実装するときのの凶悪なコーディング量はどうにかしてほしいもんだ

801 :デフォルトの名無しさん:2010/11/27(土) 11:22:15
>>800
あれはほんと後付けらしい醜さがあるな・・
lispのマクロとか欲しくなる
F#のワークフローとかコード引用符使ったらすっきり書けるかな(よく知らないけど)

802 :デフォルトの名無しさん:2010/11/27(土) 13:15:23
propdp[TAB]

まぁ、メンテも含めたらそれでも十分に極悪だがなw

803 :デフォルトの名無しさん:2010/11/27(土) 13:37:58
>>802
そんなのあったんだ
http://msdn.microsoft.com/ja-jp/library/z41h7fat.aspxに載ってないのに…

でもコールバックは自分で追加せんといかんのが片手落ちだな

804 :デフォルトの名無しさん:2010/11/27(土) 13:38:29
WPF入門とかのページそこそこあるけど
イゾンプロパティの話で
propdpのインテリセンスのこと書いてるのほとんどないよね


ぶっちゃけ、細かい使用とか話してpublic static readlyうんちゃらかんちゃら作る必要があります
ってかくより、これらはおまじないです
propdpでイゾンプロパティが作れます
だけでいいと思うんだが。

805 :デフォルトの名無しさん:2010/11/27(土) 13:44:26
いや見た目にうざいしスニペットがありゃいいってもんじゃないと思うけど

806 :デフォルトの名無しさん:2010/11/27(土) 13:47:11
WPF入門であって、VS入門じゃないから

807 :デフォルトの名無しさん:2010/11/27(土) 19:39:55
StyleCop先生「
 さぁ、private static readonlyは先頭に並べるのです、
 そしてプロパティはコンストラクタ、イベントの後ろです。
 イゾンプロパ…何それ?」
FxCop先生「
 アホかぼけ、なんでこんな糞コードを書…XAMLから自動生…しるかボケ!」

言語構文に組み込んでくれとまではいわないが、
せめて自社ツールだけでもどうにかしてくれ

808 :デフォルトの名無しさん:2010/11/28(日) 13:55:50
>>788
つかってるよー
3次元プロットはグラボ必須だし、
4次元の可視化はシェーダが欲しい。

809 :デフォルトの名無しさん:2010/11/28(日) 18:13:02
オサレなGUIより地味だけど機能的で快適なほうが良い

810 :デフォルトの名無しさん:2010/11/28(日) 18:21:32
美しさが分からん奴にそんなもの作れないよ
機能美って言葉を知ってるかい

VimだってEmacsだってあれはあれで美しいのだ

811 :デフォルトの名無しさん:2010/11/28(日) 18:29:02
>>809
オサレ⇔地味って軸と UX の良し悪しはそこまで相関ないよ。
オサレで使いやすい、オサレだけど使いにくい、
地味でも使いやすい、地味な上に使いにくい、全部ある。

812 :デフォルトの名無しさん:2010/11/28(日) 18:43:57
特定の顧客から依頼を受けて作るならいいけど
そうでなきゃ「うわ、地味。ショボそう」とか思っちゃう人もいるしな

813 :デフォルトの名無しさん:2010/11/28(日) 21:34:41
モジの色がカラフルで、画像と合わせて、グラデーションかかったボタンが激しく動き回り・・・
おしゃれだけど、見づらくて使いづらそうだね。

814 :デフォルトの名無しさん:2010/11/28(日) 21:36:08
地味に作りたきゃ地味に作れるだろ
お前しだいだ

815 :デフォルトの名無しさん:2010/11/28(日) 21:38:34
というか>>813がオシャレかな
派手でセンス悪いだけだろう

816 :デフォルトの名無しさん:2010/11/28(日) 22:05:10
>>813
おしゃれなの?それ
楳図かずおみたいな奴だな

817 :デフォルトの名無しさん:2010/11/28(日) 22:08:32
どんな恐怖アプリだよ

818 :デフォルトの名無しさん:2010/11/28(日) 22:12:43
そういうセンスの人はblinkとかマーキーとか使いまくっちゃうんだよ

819 :デフォルトの名無しさん:2010/11/28(日) 22:26:27
提供された機能は使い切らないといけないみたいな信条でもあるんじゃねえか

820 :デフォルトの名無しさん:2010/11/28(日) 22:29:10
ボタンが動き回り・・・
の点々がいいよね

ボタンなんかどんなGUIフレームワークでも動かせるけどお前ボタン動き回る画面なんか作ったことあんのかよとw

821 :デフォルトの名無しさん:2010/11/28(日) 22:30:05
js覚え初めのころ逃げるボタンとか作ったよ

822 :デフォルトの名無しさん:2010/11/28(日) 22:31:16
>ボタン動き回る画面
Blend最初触ったとき作ったぞw

残念ながら世に出ることは無かったが

823 :デフォルトの名無しさん:2010/11/28(日) 22:47:37
画像に合わせて激しく動き回るんだぞw

824 :デフォルトの名無しさん:2010/11/28(日) 22:49:33
つかまえてごらん〜

うふふふ

825 :デフォルトの名無しさん:2010/11/28(日) 23:21:43
埼玉の産婦人科「愛生会」の医院長が作った。

826 :デフォルトの名無しさん:2010/11/28(日) 23:46:57
>>825
あの人、美的センスはあるはずw
ネイチャーフォトのレベル高いよ

827 :デフォルトの名無しさん:2010/11/28(日) 23:55:05
WPFを使っているとありがちなこと
・なんでもかんでもアニメーション
・フェードインフェードアウト乱発
・とりあえず半透明
・以上を全てやっていないとゴネだす上司や低能デザイナーがいる

VS2010のI/Fのようにシンプルな見た目で
要所要所をピンポイントで強調するような使い方が一番上手いんだろうが、
そこまで理解できる人(得に上司)が世の中どれだけいることやら。

828 :デフォルトの名無しさん:2010/11/28(日) 23:55:21
ところでみんな、SQL使ってる?性能でてる?

829 :デフォルトの名無しさん:2010/11/28(日) 23:56:48
ごめん、誤爆

830 :デフォルトの名無しさん:2010/11/29(月) 00:07:50
>>827
だって、せっかくそういう機能があるんだもん
使わないともったいないじゃん

831 :デフォルトの名無しさん:2010/11/29(月) 00:24:48
アニメーションは体感速度に繋がるから
不必要値は言い切れない

832 :デフォルトの名無しさん:2010/11/29(月) 00:36:36
アニメーションも入れ方次第なのよね。
単に派手にするだけのビジュアルデザインじゃだめ。
UX デザインしないと。

例えば、Windows のウィンドウを最小化するときのアニメーションには
「次、ここをクリックしたら元のサイズに戻せますよ」という場所を示す意味がある。
でたらめな場所に向かって縮小したりしちゃダメ。

833 :デフォルトの名無しさん:2010/11/29(月) 01:51:37
ウィンドウは四角ければ十分な俺には全て無駄に見える
なんで見た目に凝るのか

834 :デフォルトの名無しさん:2010/11/29(月) 01:55:20
まあwindows上だと意味ないよね
ひたすら効率化の世界だしUIもあれだし

凝るとすればタブレットとか最近流行りのUIなどでの話だね

835 :デフォルトの名無しさん:2010/11/29(月) 01:56:18
>>833
まだ見た目(ry

836 :デフォルトの名無しさん:2010/11/29(月) 01:56:29
機能だけでいいならものつくりは簡単だな

車、パソコン、携帯電話、携帯ゲーム機、扇風機etc
たんにその本来の役目さえ果たせればいいんじゃなくてかっこいい見た目じゃないと売れない。
プログラムも同じことだよ

837 :デフォルトの名無しさん:2010/11/29(月) 01:59:25
>>833
ウィンドウなんて必要か?凝りすぎじゃね?

838 :デフォルトの名無しさん:2010/11/29(月) 02:05:14
そういえばそうだな
だが文字入力はいやだ

839 :デフォルトの名無しさん:2010/11/29(月) 02:18:29
文字入力が嫌ってイミフ CUIが嫌なんじゃないのか。

840 :デフォルトの名無しさん:2010/11/29(月) 02:25:10
ここの人たちCUIでわかるのか
じゃあCUIがいやだ

841 :デフォルトの名無しさん:2010/11/29(月) 02:26:44
データバインディングってのは
ターゲットもソースも
両方依存関係プロパティじゃないとダメなの?

842 :デフォルトの名無しさん:2010/11/29(月) 02:27:43
ああ、アレだろ、クイね。
もちろんわかるよ。

843 :デフォルトの名無しさん:2010/11/29(月) 02:28:42
>>836
まったく。
機能だけなら簡単と言い切るつもりもないけど、機能そろってりゃ他はどうでもいいってもんじゃない。

芸術的な意味のビジュアルデザインよくないと売れないというのももちろんあるし、
同時に UX デザインもされてる。

ボタンの位置とか大きさはどうなってれば使いやすいかとか、
ものすごいノウハウの積み重ねがある。

844 :デフォルトの名無しさん:2010/11/29(月) 02:29:23
>>841
ソース側は割と自由効く。

845 :デフォルトの名無しさん:2010/11/29(月) 02:30:30
>>841
ターゲットは依存関係プロパティじゃないとダメ。ソースは普通のプロパティでおk

846 :デフォルトの名無しさん:2010/11/29(月) 02:41:25
>>845
なるほどThx
TextBoxに入力した値が、いちいちなんちゃらイベントとか作らずすぐに画面に反映されて感動した。

847 :デフォルトの名無しさん:2010/11/29(月) 13:07:33
まともにWPFを解説してるサイトが
@IT、未確認飛行C
の二つしかない。

この二つだけで勉強しろというのか
もっとふえねぇかな。

848 :デフォルトの名無しさん:2010/11/29(月) 13:14:30
>>847
msdnが基本だろ

849 :デフォルトの名無しさん:2010/11/29(月) 13:18:32
wpftutorialはダメなん?

850 :デフォルトの名無しさん:2010/11/29(月) 20:18:41
俺もデータバインディングやって触ってみたけど、
XaML

851 :デフォルトの名無しさん:2010/11/29(月) 20:20:07
やべ途中で切れた
XAML手書きでやってるのが多いね
VS2010のデザイナでどうやるのかよくわかんね
デザイナでできる事をわざわざ手書きでやりたくないしな・・

852 :デフォルトの名無しさん:2010/11/29(月) 20:39:08
デザイナなんて飾りです

853 :デフォルトの名無しさん:2010/11/29(月) 20:40:09
デザイナって
プロパティウィンドウのこと?

854 :デフォルトの名無しさん:2010/11/29(月) 22:50:42
デザイナーもIntelliSenseもVisual Studio 2010の一部です!

855 :デフォルトの名無しさん:2010/11/30(火) 00:08:02
俺のした勉強の仕方。
>>847 で概要チェック。
後は Expression Blend いじりながら Binding, Template, Animation まわり
の知識を固めていく。( 〜ブログ放浪〜 )
最後に MSDN。

まあ、WinForms の時もこんな感じで勉強、ってか慣れていったが。。
素養のある人は MSDN 直でもわかるのかね。

856 :デフォルトの名無しさん:2010/11/30(火) 00:17:54
Blendなって持ってネーヨ (´・ω・`)

857 :デフォルトの名無しさん:2010/11/30(火) 00:40:09
つ【学生】

858 :デフォルトの名無しさん:2010/11/30(火) 00:51:19
解説サイト見てちょっと改変して分かった気分になって、エッセンシャルWPF読んだらよく分からなくて
ブログ放浪してやっと自分がやってた事が理解できるようになって、最後にMSDN見て納得した。

その後Blendも買って楽しいWPFライフ←今ここ

859 :デフォルトの名無しさん:2010/11/30(火) 02:50:27
<setter property="なんとか"/>

このなんとかの部分インテリセンスきかねぇ
クソだな

860 :デフォルトの名無しさん:2010/11/30(火) 04:31:01
依存関係プロパティをもっていれば
INotifyPropertyChange
を実装する必要はないんですか?

861 :デフォルトの名無しさん:2010/11/30(火) 08:55:23
持てるなら。

862 :デフォルトの名無しさん:2010/11/30(火) 10:20:42
持たせてみせよう。

863 :デフォルトの名無しさん:2010/11/30(火) 10:23:48
プロパティ。

864 :デフォルトの名無しさん:2010/11/30(火) 10:31:37
>>859
最新の Silverlight Tools 入れたら IntelliSense 効くようになる。


865 :デフォルトの名無しさん:2010/11/30(火) 11:30:42
コマンドってなんやん
イベント利用したら

Button1Click+=(sender,e)=>MessageBox.Show("Hello World");

これだけでいいのに
なんかICommandインターフェースを実装してExecuteがどうたらこうたらやらなきゃいけなくてわけわからん
なんでイベントがダメでコマンドならいいんだ?俺には難しすぎる

866 : ◆Jzt/EX0TGY8T :2010/11/30(火) 11:48:37
>>865
別にコマンドは無理して使わなくてもいい

コマンドじゃなくてイベントだと
例えばボタンが押された処理動作を
メニューやホットキーなど複数の条件から呼び出したい場合
それぞれイベントハンドラを記述していくことになる
だが、コマンドを作っておけば、XAMLでコマンド名を書くだけでいい
それ以外はバインディングなどをイベントハンドラで処理する場合
値が正しいかどうかのチェックで動作を変える場合も
イベントだと自前で実装することになる
コマンドなら雛形があるのでそれにあわせて書けばいい

今のおれがわかるのはこれぐらいだな

867 :デフォルトの名無しさん:2010/11/30(火) 12:02:05
>コマンドじゃなくてイベントだと
>例えばボタンが押された処理動作を
>メニューやホットキーなど複数の条件から呼び出したい場合
>それぞれイベントハンドラを記述していくことになる
>だが、コマンドを作っておけば、XAMLでコマンド名を書くだけでいい

それはイベントだって同じじゃあないの
Methodというメソッドを作って
<Button Click="Method"/>
<Menu Click="Method"/>
ホットキーはしらんけど
<KeyPress="Method"/>
多分こんな感じでしょ
イベントハンドラはひとつで
XMLのほうでイベントハンドラ名を書くだけでいいっしょ

868 : ◆Jzt/EX0TGY8T :2010/11/30(火) 12:13:20
>>867
そういえばそうだな
Winフォームと比べてたわ

あとは、CanExuteがfalseの場合
呼び出しもとのコントロールが自動で無効になるとか
イベントだとEnable=falseとかしないとだめでしょ

869 :デフォルトの名無しさん:2010/11/30(火) 12:15:06
>>865
デリゲートがシリアライズしづらいからクラスでラップしちゃって Java みたいになってる。
あと、コマンドには実行可否の判定(CanExecute)がつきものなので。

870 :デフォルトの名無しさん:2010/11/30(火) 12:16:45
>>867
それはでも、コマンドである必要ない。

ユーザーからの入力イベントの他に、
ちゃんと意味論的なレイヤーのイベント(今コマンドでやってるようなこと)をデリゲートで処理ってのもできたはず。
やっぱ、CanExecute とシリアライズのしやすさの問題でわざわざ ICommand インターフェイスにしてあるんだと思う。

871 :デフォルトの名無しさん:2010/11/30(火) 12:30:33
イベントに実行できるかどうかの判定を持たせたものがコマンド
ってもんでいいのかなぁ・・・

コマンドの説明見ても、「上書き保存」は、既存のファイルが無かったらできないようにする
「切り取り」は、テキストが選択されてないとできないようにする
とかそんなサンプルばっかりだし

872 : ◆Jzt/EX0TGY8T :2010/11/30(火) 12:35:03
>>871
結局MVVMで依存しないようにするにはコマンド使うことになるわけで
そういうのが必要ない場合はイベントで普通に書けばいいんじゃない

873 :デフォルトの名無しさん:2010/11/30(火) 12:46:02
要するにイベントハンドラだけでは書きづらいような部分について、
新たにコマンドという概念を追加して
XAML上で使えるようにしたってことだな。

874 :デフォルトの名無しさん:2010/11/30(火) 13:27:05
シリアライズってのはどゆこと?逐次化?

875 :デフォルトの名無しさん:2010/11/30(火) 13:35:30
>>874
バイナリ列とかXML文字列に変換って意味<シリアライズ(直列化)。

コードビハインドなしのXAML中にかけるのは、直列化可能なものだけなのよね。
デリゲートは実は直列化できなくて、
XAML のイベントへの代入は結構内部的に微妙なことしてる
(XAML から自動生成される .g.cs の方にイベント追加の += が生成されてる)

876 :デフォルトの名無しさん:2010/11/30(火) 13:43:35
>>875
なるほど、たしかにビハインドのないカスタムコントロールではXAMLにイベントを書けない。
コマンドはプロパティで扱えるのでXAMLでかけるということだな。
プロパティが直列化できるのはMSがそう設計したから?イベントも同じように出来なかったのかな。

877 :デフォルトの名無しさん:2010/11/30(火) 14:27:35
デリゲートは中身メソッドだからなぁ。

プロパティ = 見かけ上はデータ → 直列化可能
イベント = デリゲート = 中身メソッド → ダメ

という感じ。

なんというか、初期化子使って
var obj = new Type { X = ... }
みたいに書けるものだけが XAML 化可能。

878 :デフォルトの名無しさん:2010/11/30(火) 15:42:31
コマンドはロジック側がビューに依存するのを避けるためにあるんだよ。
イベントだとイベントハンドラを登録する際にロジックがビューに依存してしまう。
コマンドは結局、ビューがロジックのpublicメソッドを呼んでるのと同じなんだけど
それをXAMLだけで宣言的に書けるようにしてある。

879 :デフォルトの名無しさん:2010/11/30(火) 15:47:01
XAMLとコードビハインドは同じViewとみなしてやっても問題ない。

880 :デフォルトの名無しさん:2010/11/30(火) 15:50:56
>>878
お前なんか勘違いしてるだろ

>>879
だよな、イベントでまったく不都合はない

881 :878:2010/11/30(火) 16:15:23
コードビハインドをViewと見做すのはわかってるよ。
>>878でロジックがビューに依存すると言ったのは、VとVMの間の接続をそのままイベントに置き換えてしまった場合。
VのイベントハンドラでVMのメソッドを呼ぶようにすれば問題はないけど
それをXAMLだけでやれるようにしようとすれば、コマンドバインディングが必要になる。

882 :デフォルトの名無しさん:2010/11/30(火) 16:18:33
あんまりXAML側で何でもやる、というのは避けたほうがいいと思うけどなぁ。
デザインとメタデータに徹しさせて。
多国語対応するなら文字列リソースも分けないといけないし。

883 :デフォルトの名無しさん:2010/11/30(火) 16:26:41
あったまわりーから話の流れがつかめんが、イベントハンドラって種類によっては引数ちゃうやん?
イベントハンドラの場合、シグネチャ一緒やったらイベントハンドラ流用できっけど、シグネチャちゃうやつのイベントの場合やと
同じ処理したいって時は、いったんそいつのイベントハンドラ関数作ってからその関数内で同じ処理呼びださにゃならん。
コマンドにすりゃ、シグネチャ関係無しにどのイベントに対しても使える。って理解でOK?

884 :デフォルトの名無しさん:2010/11/30(火) 16:29:12
用語に酔ってる素人って事までわかった

885 :デフォルトの名無しさん:2010/11/30(火) 16:37:58
遅延バインドではいけないのですか?

886 :デフォルトの名無しさん:2010/11/30(火) 16:44:33
>>882
ユーザーコントロールとかビヘイビア作って XAML にそいつを書くってやり方すれば、
XAML 肥大化させず、かつコードビハインドにコード書く必要なくせる。

>>883
それは微妙。
イベントハンドラーの引数揃えりゃいいじゃん。
ICommand だって、パラメーター色々変えたいけどやむを得ず object 型だし。

そうでなくて、デリゲートはメソッドへの参照だというのがネックで、
XAML 化/XAML 中への記述がしにくいのよ、.NET のデリゲートの仕様的に。

887 :デフォルトの名無しさん:2010/11/30(火) 16:45:48
>>885
データバインディング自体が遅延バインドだけどもね。

遅延バインド/dynamic な動作は極力プログラマーの目に触れない方が安全。
だから、それをフレームワークの内側に閉じ込めて直接見えなくしてるのが WPF。

888 :デフォルトの名無しさん:2010/11/30(火) 17:05:14
イベントって Button.Click += this.OnClick; みたいに登録するでしょ?
つまりthisのクラスはButtonに依存するんだわ。
それをもしV-VMに置き換えたら V.Hoge += ((VM)this).OnHoge; となって
thisのクラス(VM)がVに依存してしまう。

889 :デフォルトの名無しさん:2010/11/30(火) 17:09:19
>>888
それも、データバインディングでイベントハンドラー登録ができれば解決したものの、
結局そこで >>886 の話になる。

XAML 中に書けるイベントハンドラー(のメソッド)はコードビハインド中のものに限られる。
ここが一番のネック。

890 :デフォルトの名無しさん:2010/11/30(火) 17:15:07
結論、イベントで問題なし
つまりWPFは必要ない

891 :デフォルトの名無しさん:2010/11/30(火) 17:19:47
>>890
XAMLとコードビハインドの関係が
イベントハンドラを介してつながるのが未だ主流、という話をしてるだけで、
誰もWPFが必要ないとは言ってないだろ。

日本語が読めないのか。

892 :デフォルトの名無しさん:2010/11/30(火) 17:20:00
流れ全く無視ワラタwwww

893 :デフォルトの名無しさん:2010/11/30(火) 17:24:36
なんか話の軸が色々あるね

・今利用者が多いの
→ コードビハインド中にイベントハンドラー直書き

・じゃあ、コマンドって?
→ イベント処理をデータバインディング使ってビューから分離するときに使う
 ここでネックになるのは、イベントだとビューから分離できない
 (ただし、ビューからの分離っての自体、アプリ規模がそこそこ大きくないと有効性低い)

・なんで Action とかでなく ICommand なの?
→ CanExecute も持たせたいから
 デリゲートの方がシリアライズしにくいから

894 :デフォルトの名無しさん:2010/11/30(火) 17:25:40
>>891-892
昨晩騒いで涙目になってた人でしょ

895 :デフォルトの名無しさん:2010/11/30(火) 19:18:38
>>888
thisのクラスはここでいうとコードビハインドのクラスでしょ。つまりXamlで宣言してる
ルート要素と同じインスタンス。
なのでXamlとコードビハインドはセットでViewなので、
V-VMでいうと
コマンドなら<Button Command={Binding hoge... } />と、XamlでVMの機能を呼び出すのに対し、
イベントなら、コードビハインドのハンドラ内でVM.hoge();と呼び出すことになる。
呼び出す場所がXamlかコードかの違いだけで、VとVMの結びつき自体は変わらないと思うんだが。

896 :デフォルトの名無しさん:2010/11/30(火) 19:29:01
>>895
クラスの依存か、インスタンスの依存かはちゃんと区別しないと。

インスタンスの依存は絶対起きる。これは当たり前。

切りたいのはクラスの依存。
で、そのためには dynamic にやる。

もちろん、コードビハインドで dynamic に VM 操作してしまえば依存は切れる。
けども、極力ユーザーに dynamic なコードは書かせたくなくて、
出来ればデータバインディングを使いたい。
(dynamic はフレームワークの内側に隠ぺいする。)

897 :デフォルトの名無しさん:2010/11/30(火) 19:36:48
つまり、WPFは使うなってことだな

898 :デフォルトの名無しさん:2010/11/30(火) 19:38:22
>>896
クラスの依存とインスタンスの依存の違いを教えて。
コマンドでもイベントでも、VがVMのインスタンスを持つのは同じ、
そしてどちらもそのインスタンスに対して呼び出しを行ってる。

899 :デフォルトの名無しさん:2010/11/30(火) 19:45:24
例えば、

ViewModel vm;
void ButtonClick(sender, e) {
vm.DoWork();
}
とかやってしまうと、View が ViewModel 参照しちゃってるでしょ、アセンブリ的に。
で、

void ButtonClick(sender, e) {
dynamic vm = DataContext;
vm.DoWork();
}
なら ViewModel の参照要らない。

データバインディングがやってることは後者(に近い)。

900 :デフォルトの名無しさん:2010/11/30(火) 19:47:07
これで何がいいかというと、DataContext をダミークラスに差し替えてテストができる。

interface とか継承ベースの強い型付けはテスト用のダミー差し替えがしにくい。
結局、リフレクションとかに頼った dynamic な挙動させたくなる。

でも、一方で、それは利用者の目には触れさせたくなくて、
出来ればフレームワークの内部に隠ぺいしたい。

901 :デフォルトの名無しさん:2010/11/30(火) 22:18:14
要するに大規模開発じゃなければ
ibentoでいい

902 :デフォルトの名無しさん:2010/11/30(火) 22:20:32
commandやビヘビヤーはblendで使うためのものだと自分を納得させた

903 :デフォルトの名無しさん:2010/11/30(火) 22:21:29
俺の場合は当分イベント利用で問題なさそうだ。
後からちまちまコマンドに書き換えても遅くはないだろう。

904 :デフォルトの名無しさん:2010/11/30(火) 22:28:08
コマンド面倒だから

>>899
ちょっと違うけどほぼ前者で
vm = DataContext as ViewModel;
ってやってた。
dynamicって何じゃー

905 :デフォルトの名無しさん:2010/11/30(火) 23:03:16
WPFすごすぎワロタ

906 :デフォルトの名無しさん:2010/11/30(火) 23:45:39
dynamicって遅延バインディングだからお勧めしないけどな。
ビルドは通るのに動かないなんて箇所を増やしてメンテできないだろ。
Bindingのエラーも潰すのが大変だっていうのに。

907 :デフォルトの名無しさん:2010/12/01(水) 00:30:20
>>904
as ViewModel したら結局クラス依存するからいまいち。
dynamic は C# 4.0 の機能で、内部的に動的コード生成して遅延バインド。

>>906
効率の意味で言ってるなら、メソッドキャッシュって仕組み持っててそこそこ早いよ。

ビルド時にチェック聞かないという意味で言うと、
どの道データバインディングしてる時点で内部挙動はリフレクション。

ただ、直接ユーザーの目に触れるかどうかって点では、触れない方がよくて、
その点、データバインディング使うとフレームワークの中に隠れてくれるのはありがたい。


908 :デフォルトの名無しさん:2010/12/01(水) 01:15:40

よく分からんが、ViewがViewModelにクラス依存したらダメなの?
Bindを使ってもdynamicを使っても結局ViewがViewModelにプロパティ名レベルでは依存するけど。
MVVMの動機の一つ「ViewModelの単体テストがしやすい」を考えると
ViewModel->Viewの依存を切っていることだけが重要だと思うが。

この動機で考えると、ViewのコードビハインドからViewModelを叩くこと自体はまったく不味くはないけど
密接に関連してしまい「ViewModelがViewの動作に依存する」になってしまうと不味い。

909 :デフォルトの名無しさん:2010/12/01(水) 01:54:16
coded-UI テストとかもあるし、View→ViewModelもやっぱ切りたいよ。

テスト抜きにしても、切れる依存は切りたい。
Java とかが DI とかに走りまくってるのも、静的な結合なくすためだし。

全くダメじゃなくて、程度の問題ではあるけども。
(依存あるコードの方が圧倒的に書きやすいので、そことのトレードオフ。)

910 :デフォルトの名無しさん:2010/12/01(水) 02:15:25
View->ViewModelはHogeViewがIHogeViewModelとかにだけ依存するようにすればよかろ。
どのみちVMはView専用なんだしテスト用のVMにだけ差し替えできれば夜露死。

911 :デフォルトの名無しさん:2010/12/01(水) 03:07:16
型チェックだけのためにインターフェイス継承は実装が面倒というのもあって。
実装自体じゃないな、その後の保守。

あと、継承ベースの型チェックはやっぱり依存度強い。
ダックタイピング的な型チェックでも、静的にチェックすることはやりようによってはできるんで、
そういう機能が C# に欲しかったりはする。

912 :デフォルトの名無しさん:2010/12/01(水) 03:22:28
念のために言っておくと、コスト/メリットのバランス考えると、
現状一番だと思うのは >>910 の言うようなインターフェイス挟むやり方。

で、>>911 は今後期待したい機能。

913 :デフォルトの名無しさん:2010/12/01(水) 03:35:30
テスト用とかが意味わからん
そんなもん必要ない

914 :デフォルトの名無しさん:2010/12/01(水) 03:36:13
アニメーションできた
単純にrectangleの色を変化させるとかLabelが動く程度なら難しいXML構文とかほとんど覚えなくていいから簡単だなぁ

915 :デフォルトの名無しさん:2010/12/01(水) 12:07:53
ListViewでデータの値に応じて表示したりしなかったりしたいんですけどどうしたらいいですか?

916 :デフォルトの名無しさん:2010/12/01(水) 12:09:52
スタイルを定義し、Style.TriggerでDataTriggerを定義。

917 :デフォルトの名無しさん:2010/12/01(水) 15:50:32
ちょっと意味不明なんだが教えてくれ

XAMLのほうで、Gridの中にRectangle(Name=rectangle1)とButton(Name=button1)を別々におく

で、C#のコードのほう

private void button1_Click(object sender, RoutedEventArgs e)
{
Duration d = new Duration(TimeSpan.FromMilliseconds(1000));
var a = new System.Windows.Media.Animation.DoubleAnimation(0, d);
rectangle1.BeginAnimation(Button.OpacityProperty, a); //ここでButtonのopacity
}

これ実行したら、button1を押すとrectangle1のOpacityが減っていって透明になるんだけど
なんでBeginAnimationの引数がButton.OpacityPropertyなの?
Rectangle.OpacityPropertyだとエラーでるんだけど。
なんでrectangle1のopacityに関するアニメなのに引数がButtonの依存プロパティなの?

どういうこと?

918 :デフォルトの名無しさん:2010/12/01(水) 16:03:36
んなこたないだろ

919 :デフォルトの名無しさん:2010/12/01(水) 16:08:46
>>917
気のせいじゃないの?
http://msdn.microsoft.com/ja-jp/library/ms605728.aspx

920 :デフォルトの名無しさん:2010/12/01(水) 16:47:48
>>864
VC#2010ExpressだけだとSilverlight Toolsインスコできなかった。書いてある通りだけど。
http://msdn.microsoft.com/ja-jp/library/cc838244%28VS.95%29.aspx

Visual Web Developer 2010 Expressの一番基本っぽいのだけ入れたらインスコできた。
http://www.microsoft.com/japan/msdn/vstudio/express/

xamlエディタがパワーアップしたにょろ!

921 :デフォルトの名無しさん:2010/12/01(水) 17:00:15
依存プロパティってなんでstaticなのに既存のインスタンスに影響持たせられるんだ

storyboad s= new storyboad();
Storyboad.setTargetProperty(なんとか);

Storyboadのstaticメソッド実行しただけなのに
これでなんかsのターゲットプロパティ変わってるし。
複雑怪奇すぎるぞwpf

922 :デフォルトの名無しさん:2010/12/01(水) 17:04:17
DependencyObjectから勉強しろ

923 :デフォルトの名無しさん:2010/12/01(水) 19:54:12
GridSplitterを使った時にさ、うまくGrid内に変化を納める方法ないの?
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="25" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Content="button1" />
<GridSplitter Grid.Column="1" Width="10" ResizeBehavior="PreviousAndNext" />
<Button Grid.Column="2" Content="button2" />
</Grid>
みたいなレイアウトで、スプリッターを左に持って行ったら、
スプリッターの移動は端っこで止まるけど、右のレイアウトがどんどん大きくなっていってしまう…

924 :デフォルトの名無しさん:2010/12/01(水) 22:29:32
>>923
ttp://www.netframeworkdev.com/windows-presentation-foundation-wpf/gridsplitter-drags-out-of-the-window-27306.shtml

925 :デフォルトの名無しさん:2010/12/01(水) 23:06:05
newしたい

926 :デフォルトの名無しさん:2010/12/02(木) 00:23:06
WPFのサイトってほとんどC#関連しかかかれてないね。
確かVisual Basic netでもWPFって使えたよね?
VBでWPFの人気がないのはなんでだろう

927 :デフォルトの名無しさん:2010/12/02(木) 00:25:48
WPFが使える、もしくは使おうと思うような人はそもそもVBなんて使わないから

928 :デフォルトの名無しさん:2010/12/02(木) 00:30:40
海外ソースの情報が多いというのもあるんじゃね
世界的にはC#のほうが多く使われてるから

929 :デフォルトの名無しさん:2010/12/02(木) 00:35:36
ググって出てきたサンプルがVBだとガックリ

930 :デフォルトの名無しさん:2010/12/02(木) 00:36:31
単純にVB使いがWPFについていけないんじゃない

931 :デフォルトの名無しさん:2010/12/02(木) 00:36:32
アニメーションやテンプレート、スタイルの単独での使い方はわかったが
スタイルとテンプレート合わせたり
スタイルとテンプレートとアニメーション合わせるともうわけわからん。

テンプレートで丸いボタンにして
ストーリーボードとかいうの使ってマウスカーソルが合わさると色が光って
スタイルでそれを全部のボタンに適用

みたいなことしたいんだがどうすればいいんだ。

932 :デフォルトの名無しさん:2010/12/02(木) 00:39:30
>>930
×VB→○VB6
×WPF→○OOP/CLR
だと思う

933 :デフォルトの名無しさん:2010/12/02(木) 00:58:01
WPFに限らず、漁って出てくる有益な情報はほぼ100%C#な気がする
有益な情報を発信できる人がVBしか使えないことはないだろうし、
そのうちでC#よりもVBのほうが好きって人はあんまりいないんじゃないかな

934 :デフォルトの名無しさん:2010/12/02(木) 01:01:47
>>931
一番いいのは、Blend で適当に何か書いてみて
生成されたコード眺めることなんだけどもね。

ほんと、Blend Express(無償)出ればいいのに。

935 :デフォルトの名無しさん:2010/12/02(木) 01:06:47
>>931
VisualStateManager使うのが正しいやり方だけど
正直VSMはBlendないときつい

936 :デフォルトの名無しさん:2010/12/02(木) 01:07:51
要するに
Visual Studio Expressだけしかもってない貧乏人は
アキラメロンってことか。
XAML PADとかいうのも使いづらい品

937 :デフォルトの名無しさん:2010/12/02(木) 01:14:55
やってできないことはないよ>VSM手書き
ただ明らかにデザインツール前提で非常にわかりにくい

938 :デフォルトの名無しさん:2010/12/02(木) 01:15:18
Blend高い(*´・ω・)(・ω・`*)ネー
趣味レベルの人向けのを5000円くらいで出してヨ

939 :デフォルトの名無しさん:2010/12/02(木) 02:21:56
自作のコントロール作って
それをVisual Studioのデザイナのツールボックスに追加するのはどうやんの?

940 :デフォルトの名無しさん:2010/12/02(木) 02:22:38
簡単なコードでコントロールができるのがかわいくして仕方がない

941 :デフォルトの名無しさん:2010/12/02(木) 02:25:08
>>939
リビルドで認識するはず
されない場合はIDEの設定を見てみて

942 :デフォルトの名無しさん:2010/12/02(木) 03:31:20
<Button.Background>
<StaticResource ResouceKey="なんとか"/>

このStaticResouceがインテリセンスで候補になーい!
Visual Studioの早期改善が求められる。

943 :デフォルトの名無しさん:2010/12/02(木) 03:37:53
関係ないけど、省略できる ResouceKey= や Path= を省略した場合に
値が属性と勘違いされて赤い字になるのがイヤ。

944 :デフォルトの名無しさん:2010/12/02(木) 04:29:22
現段階でWPFを使うのは時期早々

945 :デフォルトの名無しさん:2010/12/02(木) 04:34:31
ルーティングイベントがインテリセンスで出てこない

<Grid Button.Click="なんとか">
ここにボタンいっぱい配置するコード
</Grid>

↑のButton.Clickがインテリセンスで出てこない。
確かにまだ早い、のかも

でもWPFってVisual Studio 2005のころから(まだテスト段階だったらしいが)あるんだろ
それでもまだ早いって、相当遅れてるね。こりゃ、

946 :デフォルトの名無しさん:2010/12/02(木) 09:25:17
>>945
そのやり方に力入れてないからなぁ・・・

947 :デフォルトの名無しさん:2010/12/02(木) 09:26:13
というか、ForumなりConnectなりなんなりでフィードバック入れればいいのでは・・・

948 :デフォルトの名無しさん:2010/12/02(木) 12:01:23
Flexとか似たような技術の中ではWPFの開発環境はよくできてると思うよ
WinForms+VSが神すぎるだけ
そりゃVBやDelphiから続く系統の完成形なんだから比べたら可哀想

949 :デフォルトの名無しさん:2010/12/02(木) 13:20:17
個人輸入で買えば安いんじゃない

950 :デフォルトの名無しさん:2010/12/02(木) 14:18:58
外観はXAMLで
コードはC#で
が基本らしいけど
一部の外観はC#のほうで書いたほうがやりやすい。

951 :デフォルトの名無しさん:2010/12/02(木) 15:24:58
<Button Content="Button" Height="57" HorizontalAlignment="Left" Margin="110,118,0,0" Name="button1" VerticalAlignment="Top" Width="262">
<Button.Triggers>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.Angle"
To="90" Duration="0:0:2" AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>

ボタンにマウスが乗ったら、ボタンが回転するアニメーション作ってみたかった
このXAMLだと、ボタンにマウスがのったらエラーが出る。

どうやって直せばいいんでしょうか。
「プロパティ パス 'RenderTransform.Angle' に解決できないプロパティ参照があります。該当するオブジェクトでそれらのプロパティがサポートされていることを確認してください。」
とかいうメッセージ出てくる。イミフ

952 :デフォルトの名無しさん:2010/12/02(木) 15:55:04
<Button Content="Button" Height="57" HorizontalAlignment="Left" Margin="110,118,0,0" Name="button1" VerticalAlignment="Top" Width="262">
<Button.RenderTransform>
<RotateTransform />
</Button.RenderTransform>
<Button.Triggers>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(RotateTransform.Angle)"
To="90" Duration="0:0:2" AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>

これで動いた。プロパティ指定は"(自身のもつプロパティ).(プロパティの持つインスタンスの型.プロパティ)"という書き方になるらしい。
なんでRenderTransform.Angleって書き方じゃだめなのか俺も解説ほしい。
あと、RenderTransformにRotateTransformを入れとく必要があるぜ。

953 :デフォルトの名無しさん:2010/12/02(木) 16:48:30
添付プロパティって

<Button Grid.Row=1/>

これをC#のコードで書いたら
Grid.SetRow(button1,1)

なんか依存プロパティとか難しいこと言ってたけど書き方を少しだけかえただけじゃん。

C言語だとOpen(door)だったのがオブジェクト指向で
door.Open()
になったのと同じ感じがする。

954 :デフォルトの名無しさん:2010/12/02(木) 21:20:33
>>950
それはテンプレート使いこなしてないだけでない?

具体的にはどういうの?<一部の外観、C#の方がやりやすい。

955 :デフォルトの名無しさん:2010/12/02(木) 23:49:09
テンプレートでWPFアプリケーション作ったときに
using System.Windows.Media.Animation
が書いてない。
いちいち新しいプロジェクト付くる旅にusing書くのめんどくせ。
最初から書けよクソ

956 :デフォルトの名無しさん:2010/12/02(木) 23:50:25
テンプレート書き変えろクソ

957 :デフォルトの名無しさん:2010/12/02(木) 23:52:32
VBだとプロジェクト単位で弄れるのにね

958 :デフォルトの名無しさん:2010/12/03(金) 14:22:40
うわああああああああああああ

959 :デフォルトの名無しさん:2010/12/03(金) 14:30:24
XAMLコードで#if DEBUGみたいなことできる?

960 :デフォルトの名無しさん:2010/12/03(金) 14:31:37
Styleを使えばボタンの上にマウスがのったらボタンのプロパティ(ContentとかBackgroundとか)を変える
みたいなことはやり方を覚えた。

<Button>
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Content" Value="マウスがのってます"/>
<Setter Property="Background" Value="blue"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>

これでいいみたいだ。
でもこれだとトリガーでセットするプロパティはマウスが乗ったコントロールと同じものしかできん。

ボタンの上にマウスカーソルがのったらテキストボックスの色が変わる
みたいなことはどうやればいい?

961 :デフォルトの名無しさん:2010/12/03(金) 19:43:28
テキストボックスのStyleに記述
Triggerの代わりにDataTriggerでバインディング

962 :デフォルトの名無しさん:2010/12/03(金) 19:44:20
Button の方と TextBox の方のトリガーになってるプロパティをデータバインディングしとくとかかなぁ。

963 :デフォルトの名無しさん:2010/12/03(金) 23:34:37
関連性があって近くにあるならControlTemplateでまとめる、ってわけには。
1対1じゃないとダメか。

964 :デフォルトの名無しさん:2010/12/04(土) 14:16:29
TextBlockの文字の縁取り?って出来ないんですか?

965 :964:2010/12/04(土) 14:47:40
自己解決しました

966 :デフォルトの名無しさん:2010/12/05(日) 00:59:28
MVVMって何

<Grid>
<Button Width="100">
<Button.Template>

こういうのがViewで

class person{
int age;
string name;
}

これがModelなの?
ModelViewって何

967 :デフォルトの名無しさん:2010/12/05(日) 01:00:10
ぐぐって勉強してください

968 :デフォルトの名無しさん:2010/12/05(日) 01:12:27
>>966
データバインディングでビューから色々分離する設計パターン。

969 :デフォルトの名無しさん:2010/12/05(日) 01:17:52
何で「M-V-VM」なんだろうか。
M-VM-V か V-VM-M の方が繋がってる方向的に良くなーい?

970 :デフォルトの名無しさん:2010/12/05(日) 01:19:24
MVC

971 :デフォルトの名無しさん:2010/12/05(日) 01:27:06
MVP

972 :デフォルトの名無しさん:2010/12/05(日) 01:50:39
主役はあくまでViewとModelだからかなぁ。

973 :デフォルトの名無しさん:2010/12/05(日) 14:43:10
MVVMはシンメトリックでなんか安定してるだろ?

974 :デフォルトの名無しさん:2010/12/05(日) 14:56:59
じゃあVMMVで

975 :デフォルトの名無しさん:2010/12/05(日) 16:56:20
大抵はpythonだけで事足りるからな
オサレなGUI?そんなの個人でやるもんじゃないでしょ

976 :デフォルトの名無しさん:2010/12/05(日) 17:04:19
美的感覚のない奴にきれいなコードが書けますか?
ハイ無理ですね

977 :デフォルトの名無しさん:2010/12/05(日) 21:13:14
PythonにWPFより出来のいいGUIビルダあるの?
教えて

978 :デフォルトの名無しさん:2010/12/05(日) 21:14:22
>>975
まだWPFがオサレな

979 :デフォルトの名無しさん:2010/12/05(日) 21:20:16
Python製のGUIアプリって外観とか以前に異常に使いづらいのしか出会ったことないわ

980 :デフォルトの名無しさん:2010/12/05(日) 21:32:41
釣りか嵐でしょ。
突然何を書いてるのかと。

981 :デフォルトの名無しさん:2010/12/05(日) 21:34:07
>>969
まったくだよな。
言いやすさなんだろか?

982 :デフォルトの名無しさん:2010/12/05(日) 21:37:51
難しい面倒くさいと言うけどWPF+VC#って
スクリプト言語なども含めて他の言語のGUIアプリ開発環境と比べたら神だよ
最高の完成度なのはWinFormsだが

983 :デフォルトの名無しさん:2010/12/05(日) 21:48:58
なんつったっけ
firefoxのguiフレームワーク
あんなわけわからんのでもガンガンいくからな外人は

984 :デフォルトの名無しさん:2010/12/05(日) 21:51:21
>>982
そう、他の言語やら使うと(使わされると)実感するよ。

985 :デフォルトの名無しさん:2010/12/05(日) 22:09:00


WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part8
http://hibari.2ch.net/test/read.cgi/tech/1291554513/

986 :デフォルトの名無しさん:2010/12/05(日) 22:13:48

1のコメントが前向きだ

987 :デフォルトの名無しさん:2010/12/05(日) 22:20:02
1 .NET3.0もリリースされて盛り上がってまいりますた。
2 .NET3.5 SP1 Betaもリリースされて盛り上がってまいりますた。
3 .NET3.5 SP1 もリリースされて盛り上がってまいりますた。
4 .NET3.5 SP1 もリリースされて盛り上がってまいりますた。
5 .NET3.5 SP1 もリリースされて盛り上がってまいりますた。
6 .NET4.0もリリースされたけど別に盛り上がってはいないよね…。
7 パワフルで柔軟すぎるのが敗因か? 正直ついていけないよね…。

988 :デフォルトの名無しさん:2010/12/05(日) 23:11:17
昔に戻っただけでしたね
あと別に盛り上がってないよね(銀光的な意味で)

989 :デフォルトの名無しさん:2010/12/05(日) 23:25:35
いつも荒らしに来る子?がテンプレ書き変えちゃってたから元に戻したよ。
C#スレでもWPFの質問(回答が付いてる!)見る機会が増えてきて、盛り上がってまいりますた。

990 :976:2010/12/05(日) 23:29:29
荒らし呼ばわり来たよこれ
たまんねー

991 :デフォルトの名無しさん:2010/12/05(日) 23:43:58
自分が荒らしと呼ばれるかもという感覚はあるんだな

992 :デフォルトの名無しさん:2010/12/05(日) 23:57:31
>>976>>990
これが荒らしじゃなかったら何だって言うんだw

993 :デフォルトの名無しさん:2010/12/06(月) 00:08:25
どうでもいいけどVS2010ってなんでソリューションエクスプローラやクラスビューのツリービューのところだけ
WPFじゃないんだろう
エディタはWPFで作ってるくせにそんなに特別負荷のかかるところとも思えないんだが

994 :デフォルトの名無しさん:2010/12/06(月) 00:14:20
どうやってそういうのわかるのん?

995 :デフォルトの名無しさん:2010/12/06(月) 00:18:06
割と有名な話でしょ
Windowsの設定によってはスクロールバーなんか明らかに他の部分と違うし
http://connectppe.microsoft.com/VisualStudioJapan/feedback/details/564203/
単にリリースに間に合わせるためっぽいね

996 :デフォルトの名無しさん:2010/12/06(月) 00:44:54
盛り上がっては来てるんじゃないの。楽観だけど

997 :デフォルトの名無しさん:2010/12/06(月) 01:01:14
Part1 2006/11/08-2008/05/24 563日
Part2 2008/05/22-2009/01/11 234日
Part3 2009/01/09-2009/06/20 162日
Part4 2009/06/19-2009/12/27 191日
Part5 2009/12/27-2010/05/21 145日
Part6 2010/05/21-2010/08/28 99日
Part7 2010/08/22-2010/12/06 106日
Part8 2010/12/05-2011/?

1の過疎時代を知っていると感慨深いものがある。

998 :デフォルトの名無しさん:2010/12/06(月) 01:21:46
ume

999 :デフォルトの名無しさん:2010/12/06(月) 01:23:08
sine

1000 :デフォルトの名無しさん:2010/12/06(月) 01:23:18
cosine

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

226 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)