MVVMについて語ろう
■ このスレッドは過去ログ倉庫に格納されています
2012/06/06(水) 11:03:33.21
WPF/Silverlight/WinRT開発の必須技術、MVVMについて語ろうではないか!
569デフォルトの名無しさん
2013/01/20(日) 09:40:48.58 >>568
ほんの少しな( ´Д`)y━・~~
ほんの少しな( ´Д`)y━・~~
570デフォルトの名無しさん
2013/01/22(火) 07:57:45.76 @Grabacr07 いままでのオレオレICommandの正しい実装基底クラス
Prismのパクリなのになんでこんなに偉そうなの?
Prismのパクリなのになんでこんなに偉そうなの?
571デフォルトの名無しさん
2013/01/22(火) 19:39:17.12 心底どうでもいい
572デフォルトの名無しさん
2013/01/22(火) 21:17:29.87 MVVMライブラリはすべてPrismのパクリだからな
いまさらだろ
いまさらだろ
573デフォルトの名無しさん
2013/01/25(金) 10:23:59.51 別に偉そうじゃない件について
どれだけコンプレックス感じてんだよw ダッセーやつw ぷげら
どれだけコンプレックス感じてんだよw ダッセーやつw ぷげら
574デフォルトの名無しさん
2013/01/25(金) 23:38:53.69 実際やってみたらMVVMではなくWPFやSilverlight固有の部分でかなり躓いた
初見でXAMLを自由自在に扱える奴とかいるのか?
初見でXAMLを自由自在に扱える奴とかいるのか?
575デフォルトの名無しさん
2013/01/25(金) 23:46:59.77 固有の約束事を理解しないといけないのはWinFormsだってASP.NETだって
PHPとかのWebフレームワークだって一緒だ
PHPとかのWebフレームワークだって一緒だ
576デフォルトの名無しさん
2013/01/26(土) 00:00:26.99 パネル使ったレイアウトに慣れてないだけじゃね?
577デフォルトの名無しさん
2013/01/26(土) 00:07:18.85 >>574
ちなみに躓いたのどこら編?
ちなみに躓いたのどこら編?
578デフォルトの名無しさん
2013/01/26(土) 00:11:58.51 ControlTemplateとか初見でMSDNだけで使いこなせたら神だわ
579デフォルトの名無しさん
2013/01/28(月) 10:43:39.37 Templateカスタマイズする時点で折れるな
580デフォルトの名無しさん
2013/01/29(火) 02:16:53.83 >>573
別にウガヤが考えたロジックじゃあないのに
まるで自分で考案したような口ぶりが臭いだけじゃろ。
特にcommandのweakeventなんてprismのアイデアそのまんまだし。
++c++やneueと違って.NETやC#(言語)の知識は薄っぺらいのに
ビックマウスだから余計に臭い。
別にウガヤが考えたロジックじゃあないのに
まるで自分で考案したような口ぶりが臭いだけじゃろ。
特にcommandのweakeventなんてprismのアイデアそのまんまだし。
++c++やneueと違って.NETやC#(言語)の知識は薄っぺらいのに
ビックマウスだから余計に臭い。
581デフォルトの名無しさん
2013/01/29(火) 05:30:37.24 >>580
詳しくは知らんが咀嚼して自分のライブラリとしてまとめ上げて、それを採用してくれてるとこもあるんだから、口だけ番長のお前より遥かにまし。
リアルでフルボッコにされたの?悔しいのぅ悔しいのぅ。
詳しくは知らんが咀嚼して自分のライブラリとしてまとめ上げて、それを採用してくれてるとこもあるんだから、口だけ番長のお前より遥かにまし。
リアルでフルボッコにされたの?悔しいのぅ悔しいのぅ。
582デフォルトの名無しさん
2013/01/29(火) 07:57:35.12 奴が自分で考案したみたいなことを言っているのは見たことないが
どの辺で言ってたのか気になるな
どの辺で言ってたのか気になるな
583デフォルトの名無しさん
2013/01/29(火) 08:22:09.37 別に好きでも嫌いでもないが、世の中のMVVMフレームワークは全てLivetより下と言ってるように取れる文書ならみた
MVVMが普及しないのは既存のインフラが不十分なせいで、Livetがそれを解決するんだとか
確かアンチMVVMに反論する記事だったかと思う
MVVMが普及しないのは既存のインフラが不十分なせいで、Livetがそれを解決するんだとか
確かアンチMVVMに反論する記事だったかと思う
584デフォルトの名無しさん
2013/01/29(火) 08:34:30.68 現場でMVVMゴリ押しして使ったら大失敗したからアホにも使えるように作ったんだっけ?
部下も可哀想だな
部下も可哀想だな
585デフォルトの名無しさん
2013/01/29(火) 08:50:43.67 まあ既存のが不十分なのはあってるな
ただLivetが必要十分かと言うとそうでもない
ただLivetが必要十分かと言うとそうでもない
586デフォルトの名無しさん
2013/01/29(火) 09:18:58.54 Javascriptエンジン組み込んでknockout.jsを逆移植するのがいいと思う
ビューに振る舞いを書けた方がいいのは、それを最初否定してたMVVM自身によって証明されたし
VMも静的言語で書くのは面倒な単純作業すぎる
ビューに振る舞いを書けた方がいいのは、それを最初否定してたMVVM自身によって証明されたし
VMも静的言語で書くのは面倒な単純作業すぎる
587デフォルトの名無しさん
2013/01/29(火) 09:31:08.32 ReactiveExtensions絡めて作ってるがすこぶる楽だし見通し良くなってイイよ。
まぁ向き不向き有るかもしれんが。まだ試しで作ってるだけなので後でいろいろはまるのかもしれんけど。
内部の状態遷移など含めて綺麗に落とし込みたいんだけどまだそこまで出来とらん。
まぁ向き不向き有るかもしれんが。まだ試しで作ってるだけなので後でいろいろはまるのかもしれんけど。
内部の状態遷移など含めて綺麗に落とし込みたいんだけどまだそこまで出来とらん。
588デフォルトの名無しさん
2013/01/29(火) 10:26:40.09 MVVMとリアクティブプログラミングの相性は非常にいいね。
ただ、ReactiveExtensionsは記述が冗長になるので
人にはお勧めできないな。
async,awaitみたいにコンパイラ支援があればいいんだけど。
ただ、ReactiveExtensionsは記述が冗長になるので
人にはお勧めできないな。
async,awaitみたいにコンパイラ支援があればいいんだけど。
589デフォルトの名無しさん
2013/01/29(火) 10:36:58.35590デフォルトの名無しさん
2013/01/29(火) 12:29:20.69 MVVMって何ですか?
591デフォルトの名無しさん
2013/01/29(火) 12:40:25.22 wwwwみたいなAAの一種
592デフォルトの名無しさん
2013/01/29(火) 12:51:58.26 >>588
俺は非同期についてはasync,awaitを使ってるから気にしてなくて、
リアクティブプログラミング本来の "関係性を記述する" って部分で冗長性が気になる。
例えば、
int A { get { return B ? C : D.E; } }
って単純な関係性を記述するだけでも、それなりの量になる。
> F#だとその辺を自分でクエリ構文を定義してよしなに出来なくもないけど。
F#の計算式は羨ましいね。
async, awaitがTask<T>を生成するのと同じように、
計算式で ReactiveProperty<T> を生成すると非常にすっきり書ける。
俺は非同期についてはasync,awaitを使ってるから気にしてなくて、
リアクティブプログラミング本来の "関係性を記述する" って部分で冗長性が気になる。
例えば、
int A { get { return B ? C : D.E; } }
って単純な関係性を記述するだけでも、それなりの量になる。
> F#だとその辺を自分でクエリ構文を定義してよしなに出来なくもないけど。
F#の計算式は羨ましいね。
async, awaitがTask<T>を生成するのと同じように、
計算式で ReactiveProperty<T> を生成すると非常にすっきり書ける。
593デフォルトの名無しさん
2013/01/29(火) 13:51:35.91 >>592
> int A { get { return B ? C : D.E; } }
> って単純な関係性を記述するだけでも、それなりの量になる。
自分もまだそこまで突っ込んで触ってないのでなんだが、自分で用途に合わせた複数要素を取れるZipみたいな物とか作らないと記述が冗長になりそうな気はしてる。
Zip重ねてとかでもいいけど見た目的にも身微妙な気がしなくもない。
> 計算式で ReactiveProperty<T> を生成すると非常にすっきり書ける。
その辺でSelectManyとかSwitchで上手く合成出来ると綺麗に書けるんかね( ´Д`)y━・~~
> int A { get { return B ? C : D.E; } }
> って単純な関係性を記述するだけでも、それなりの量になる。
自分もまだそこまで突っ込んで触ってないのでなんだが、自分で用途に合わせた複数要素を取れるZipみたいな物とか作らないと記述が冗長になりそうな気はしてる。
Zip重ねてとかでもいいけど見た目的にも身微妙な気がしなくもない。
> 計算式で ReactiveProperty<T> を生成すると非常にすっきり書ける。
その辺でSelectManyとかSwitchで上手く合成出来ると綺麗に書けるんかね( ´Д`)y━・~~
594デフォルトの名無しさん
2013/01/29(火) 15:41:47.19 F#で計算式を使うと言っても、do!やlet!でやるのは
ReactiveProperty<T>からをT型の値を取得すると同時に値の監視を開始するだけだから
C#でも似たようなことはできるけどね。
上の int A { get { return B ? C : D.E; } } の関係性なら
ReactiveProperty<int> A
{
get { return ReactiveProperty.Create(x => x(B) ? x(C) : x(x(D).E)); }
}
と書けるReactiveProperty.Createは実装可能。
逆に言えばF#でも同程度の記述の冗長性は残るという事になる。
ReactiveProperty<T>からをT型の値を取得すると同時に値の監視を開始するだけだから
C#でも似たようなことはできるけどね。
上の int A { get { return B ? C : D.E; } } の関係性なら
ReactiveProperty<int> A
{
get { return ReactiveProperty.Create(x => x(B) ? x(C) : x(x(D).E)); }
}
と書けるReactiveProperty.Createは実装可能。
逆に言えばF#でも同程度の記述の冗長性は残るという事になる。
595デフォルトの名無しさん
2013/01/29(火) 16:11:47.74 >>594
自分が言ってるのはQueryExpressionsの方。
使ってる例としてはこんな感じ。
http://mnajder.blogspot.jp/2011/09/when-reactive-framework-meets-f-30.html
これはクエリ式への直接変換的な感じだけど、望みのクエリ式を追加できるので独自のDSL的に定義できる。
自分が言ってるのはQueryExpressionsの方。
使ってる例としてはこんな感じ。
http://mnajder.blogspot.jp/2011/09/when-reactive-framework-meets-f-30.html
これはクエリ式への直接変換的な感じだけど、望みのクエリ式を追加できるので独自のDSL的に定義できる。
596デフォルトの名無しさん
2013/01/30(水) 18:31:22.62 従来型のほうがいいだろ
誰かさんにプレゼント
優れた言語より流行ってる言語
優れたフレームワークより使われてるフレームワーク
誰かさんにプレゼント
優れた言語より流行ってる言語
優れたフレームワークより使われてるフレームワーク
597デフォルトの名無しさん
2013/01/30(水) 18:52:28.14 アプリケーションで、各種バー表示のon/offや配置等の、GUIに関する設定がよくあると思いますが
そういう設定の保存・読み込みロジックはVMでいいんですよね?
MVVMの概念がまだあやふやで確信が持てません。
そういう設定の保存・読み込みロジックはVMでいいんですよね?
MVVMの概念がまだあやふやで確信が持てません。
598デフォルトの名無しさん
2013/01/30(水) 18:55:35.45 一番使われてるフレームワークが一番、ってのなら、
一番のラーメンはインスタントラーメンだぜ?
一番のラーメンはインスタントラーメンだぜ?
599デフォルトの名無しさん
2013/01/30(水) 19:04:13.88 Haskell大流行だもんな
600デフォルトの名無しさん
2013/01/30(水) 19:13:05.88601デフォルトの名無しさん
2013/01/30(水) 20:13:22.03 COBOL最高だろうが
602デフォルトの名無しさん
2013/01/30(水) 20:49:05.37603デフォルトの名無しさん
2013/01/30(水) 20:55:18.66 メニューとか(共有の)ツールバーとかウィンドウ制御のようなシェル的な部分に
MVVMを適用しようと考えてはいけない
そういうのはインフラとしてMVVMの枠外で実装して、その中で扱うドキュメントには
必要に応じてMVVM適用するのがスマート
MVVMを適用しようと考えてはいけない
そういうのはインフラとしてMVVMの枠外で実装して、その中で扱うドキュメントには
必要に応じてMVVM適用するのがスマート
604デフォルトの名無しさん
2013/01/30(水) 22:12:56.62 あくまでVの都合だしな
MVVMは本体処理とUIの組み合わせ方のパターンでしかないので、ウィンドウのサイズ保存とかはロジックとは無関係
MVVMは本体処理とUIの組み合わせ方のパターンでしかないので、ウィンドウのサイズ保存とかはロジックとは無関係
605デフォルトの名無しさん
2013/01/30(水) 22:13:53.89606デフォルトの名無しさん
2013/01/30(水) 22:14:56.02 あぁ、確かにビジネスロジックではないのか
607デフォルトの名無しさん
2013/01/30(水) 22:45:08.78 あえてシェルにMVVMを適用するんならMだろうな
どちらにしろGUIに閉じた話であって、ビジネスロジックの世界とは分けて考えるべき
どちらにしろGUIに閉じた話であって、ビジネスロジックの世界とは分けて考えるべき
608デフォルトの名無しさん
2013/01/30(水) 22:47:03.45609デフォルトの名無しさん
2013/01/30(水) 22:56:21.08 >>608
それこそビジネスロジックとUIがごっちゃになってね?
もともとビジネスロジックから見たらVの実装の詳細にすぎないことで、
それが少々複雑になるからMVVM適用しようってんなら
GUIの設定情報を持つためのMを使うのが適切だと思うよ
それこそビジネスロジックとUIがごっちゃになってね?
もともとビジネスロジックから見たらVの実装の詳細にすぎないことで、
それが少々複雑になるからMVVM適用しようってんなら
GUIの設定情報を持つためのMを使うのが適切だと思うよ
610デフォルトの名無しさん
2013/01/30(水) 23:00:06.22 アプリケーションモデルというやつですか。
611デフォルトの名無しさん
2013/01/30(水) 23:07:07.58 そもそもそんなロジックに直接関係なくてGUIに閉じた混みいった制御と
金,人間,住所,データベース,入力フォーム云々を一緒にして扱うのがおかしい
そこ明確に分けるのが一番大事だろ
金,人間,住所,データベース,入力フォーム云々を一緒にして扱うのがおかしい
そこ明確に分けるのが一番大事だろ
612デフォルトの名無しさん
2013/01/30(水) 23:19:21.22 そんなめんどくさいことせんでも、VBで画面にぽちぽちボタンとか張って、
ダブルクリックしてイベント追加したら、その中に全部処理書けばええやろww
ダブルクリックしてイベント追加したら、その中に全部処理書けばええやろww
613デフォルトの名無しさん
2013/01/30(水) 23:22:23.10 PrismだとShellに対してVとVMがあって、ShellのVMのプロパティに
入力画面とかのVM渡して、ShellのVの中でその画面開いて、ツールバーなども
Shellが管理するようになってたはず。サンプルではShellに対するMは無かったけど、
ツールバーの細かい設定入れるとしたら当然この設計ではShellのMになるよね。
ShellのVMが本当に必要かどうかはかなり怪しいが。
入力画面とかのVM渡して、ShellのVの中でその画面開いて、ツールバーなども
Shellが管理するようになってたはず。サンプルではShellに対するMは無かったけど、
ツールバーの細かい設定入れるとしたら当然この設計ではShellのMになるよね。
ShellのVMが本当に必要かどうかはかなり怪しいが。
614デフォルトの名無しさん
2013/01/30(水) 23:22:30.14 >>609
ビジネスロジックというのを定形的に捉えすぎてね?
アプリケーションシェルと言った物の実装も対象が違うだけでビジネスロジックの実装と変わらんだろ。
MVVMはロジックとビューをブリッジ介して分離する仕組みでその対象がシェルでも構わんと思うけどね。
他の実装がしやすいなら無理に適応する必要はないけど。
ビジネスロジックというのを定形的に捉えすぎてね?
アプリケーションシェルと言った物の実装も対象が違うだけでビジネスロジックの実装と変わらんだろ。
MVVMはロジックとビューをブリッジ介して分離する仕組みでその対象がシェルでも構わんと思うけどね。
他の実装がしやすいなら無理に適応する必要はないけど。
615デフォルトの名無しさん
2013/01/30(水) 23:26:54.51616609
2013/01/30(水) 23:32:29.95 >>614-615
うん。だからシェルの抽象化がVMだしシェルのロジックやデータがMとするなら
Mじゃないかってことが言いたかった。省くならVMを省くべきじゃない?
バインディングもあんまり役に立たなそうだし。
うん。だからシェルの抽象化がVMだしシェルのロジックやデータがMとするなら
Mじゃないかってことが言いたかった。省くならVMを省くべきじゃない?
バインディングもあんまり役に立たなそうだし。
617デフォルトの名無しさん
2013/02/04(月) 00:54:01.35 ViewModelHelper.ReadOnlyDispatcherCollectionのソース見てるんだけど
Dispatcher経由でViewModelのDisposeしなくていいの?
Dispatcher経由でViewModelのDisposeしなくていいの?
618デフォルトの名無しさん
2013/02/04(月) 02:17:34.63 WeakReferenceがなんとか
619デフォルトの名無しさん
2013/02/12(火) 00:41:05.78 だからコードビハインドのあるなしとMVVMに何の関連もないと何度言ったら。。。最近コードビハインド付のMVVMしかしてない
おがやさん以前は、コードビハインドはMVVMの癌、肯定してる人は糞みたいなニュアンスのこと言ってませんでしたっけ?
この人若年性健忘症なのかな?
おがやさん以前は、コードビハインドはMVVMの癌、肯定してる人は糞みたいなニュアンスのこと言ってませんでしたっけ?
この人若年性健忘症なのかな?
620デフォルトの名無しさん
2013/02/12(火) 00:45:23.42 そーとー昔じゃないかな?それ
621デフォルトの名無しさん
2013/02/12(火) 00:59:57.57 いくら昔でも180度真反対に勘違いするほどの痴呆症を患った高齢の方には見えなかったもので。
622デフォルトの名無しさん
2013/02/15(金) 08:39:40.77 >>621
ようするにやせ我慢だったと。そういう事です。
コードビハインドなんて所詮MS界隈でしか使われないローカル技術仕様の用語に過ぎず
モデル云々を語る抽象的な概念にはほど遠い。
単に趣味と程度の問題を高尚っぽく語りたい人が散見されるだけ。
ようするにやせ我慢だったと。そういう事です。
コードビハインドなんて所詮MS界隈でしか使われないローカル技術仕様の用語に過ぎず
モデル云々を語る抽象的な概念にはほど遠い。
単に趣味と程度の問題を高尚っぽく語りたい人が散見されるだけ。
623デフォルトの名無しさん
2013/02/16(土) 04:51:33.73624デフォルトの名無しさん
2013/02/16(土) 06:51:52.98 例
625デフォルトの名無しさん
2013/02/16(土) 10:39:51.16 MS以外のコードビハインドkwsk!
626デフォルトの名無しさん
2013/02/16(土) 11:09:58.98 >>625
knockout.js
knockout.js
627デフォルトの名無しさん
2013/02/16(土) 15:33:08.84 なんかデータバインディング持っているフレームワークなら何でもコードビハインドだとでも
言いたそうな勢いだなw
UIの画面設計の宣言的定義とUIロジックの手続き的記述を分けて書けるフレームワークなんて
MS以外にもいくらでもあるし、データバインディングもそのための定番手法の一つではあるが
knockout.js含めて「コードビハインド」という用語がMS関連以外の文脈で使われることなんて
ほとんどね〜よ。手続き的記述の部分をMSが独自にそう呼んでいるだけの話。
言いたそうな勢いだなw
UIの画面設計の宣言的定義とUIロジックの手続き的記述を分けて書けるフレームワークなんて
MS以外にもいくらでもあるし、データバインディングもそのための定番手法の一つではあるが
knockout.js含めて「コードビハインド」という用語がMS関連以外の文脈で使われることなんて
ほとんどね〜よ。手続き的記述の部分をMSが独自にそう呼んでいるだけの話。
628デフォルトの名無しさん
2013/02/16(土) 15:44:41.67 日本語だと分離コードになるのか。
確かにMS関連しかその言葉聞かないし、ぐぐってもMS関連しか出てこない
確かにMS関連しかその言葉聞かないし、ぐぐってもMS関連しか出てこない
629デフォルトの名無しさん
2013/02/19(火) 01:32:44.57 似たようなものだと、コードビハインドという単語ではないけどJSFの管理ビーンとか似た雰囲気
630デフォルトの名無しさん
2013/02/19(火) 08:22:24.77 Adobe FlexのMXML+ActionScript3がかなり似ているというか洗練されていると思う。
MXMLでのV定義は単純にAS3でのクラス定義の別記法なので、AS3でのクラス定義と
同様に実装するinterfaceを指定出来る。VMにもinterfaceを定義してあげればVとVMが
互いの実装を知らずにinterfaceだけを通してやり取りが出来る。
VMのinterfaceの先頭にBindableとアノテーションをつければ勝手にgetter・settetが
バインド可能になるのでデータバインディングでVMの値をVにはり付けるのも簡単。
MXMLでのV定義は単純にAS3でのクラス定義の別記法なので、AS3でのクラス定義と
同様に実装するinterfaceを指定出来る。VMにもinterfaceを定義してあげればVとVMが
互いの実装を知らずにinterfaceだけを通してやり取りが出来る。
VMのinterfaceの先頭にBindableとアノテーションをつければ勝手にgetter・settetが
バインド可能になるのでデータバインディングでVMの値をVにはり付けるのも簡単。
631デフォルトの名無しさん
2013/03/03(日) 08:33:04.94 やっぱダイアログや画面遷移はView Serviceにするのが好きだな。
632デフォルトの名無しさん
2013/03/03(日) 10:12:08.72 同意
共通に使えるものにメッセージ使うのはアンチパターン
というかメッセージいらない
共通に使えるものにメッセージ使うのはアンチパターン
というかメッセージいらない
633デフォルトの名無しさん
2013/03/07(木) 11:13:30.47 MVVMの意図するところはこんな認識で合ってる?
・V<->VM の依存関係はバインディングに任せましょ
・VM はデータの加工と操作 (コマンド) の提供に専念しましょ
・V<->VM の依存関係はバインディングに任せましょ
・VM はデータの加工と操作 (コマンド) の提供に専念しましょ
634デフォルトの名無しさん
2013/03/09(土) 07:15:19.68 大雑把にはあってるんじゃないか
635デフォルトの名無しさん
2013/03/09(土) 19:14:13.47 MとV&VMを別プロジェクトにして問題ある?
636デフォルトの名無しさん
2013/03/09(土) 19:48:12.38 >>635
ないって言うかむしろしろ(´・ω・`)
ないって言うかむしろしろ(´・ω・`)
637デフォルトの名無しさん
2013/03/09(土) 19:48:13.70 よっぽど小規模でない限り分けるだろ
638デフォルトの名無しさん
2013/03/22(金) 14:44:16.04 開幕迎える前にグッバイ・モーガンになるんか?
639デフォルトの名無しさん
2013/04/01(月) 12:24:22.90 livet 詳しい人いたら教えてくれ。
ttps://github.com/karno/Mystique/blob/master/Mystique/Views/Dialogs/SettingSub/ColoringConfig.xaml
ここの200行あたりにある感じで、ConfirmationDialogInteractionMessageAction を使う、MenuItem を作った。
でもこの方法だと、MenuItem の IsEnabled に ListenerCommand の CanXXXX が反映されない。
IsEnabled に反映させるにはどうしたらいいんだろうか?
ttps://github.com/karno/Mystique/blob/master/Mystique/Views/Dialogs/SettingSub/ColoringConfig.xaml
ここの200行あたりにある感じで、ConfirmationDialogInteractionMessageAction を使う、MenuItem を作った。
でもこの方法だと、MenuItem の IsEnabled に ListenerCommand の CanXXXX が反映されない。
IsEnabled に反映させるにはどうしたらいいんだろうか?
640デフォルトの名無しさん
2013/04/01(月) 13:51:12.65 MenuItemに直接アクション持たせてIsEnabled管理も別プロパティでやるか、
CommandのCan〜状態更新の際CommandのRaiseCanExecuteChangedを呼ぶ
CommandのCan〜状態更新の際CommandのRaiseCanExecuteChangedを呼ぶ
641639
2013/04/01(月) 19:20:38.99 せっかく教えてもらったが、いってることがわからんズラ
「MenuItemに直接アクション持たせて」とはどのようすればいいんだろうか?
サンプルのサイトがあったら張ってもらえないだろうか。
「CommandのCan〜状態更新の際CommandのRaiseCanExecuteChangedを呼ぶ」
これをやるためには、MenuItem の Command にバインディングする必要があるだろうが、ダイアログの表示はコード・ビハインドでやるという理解でよいでしょうか?
質問ばかりですまんです。
「MenuItemに直接アクション持たせて」とはどのようすればいいんだろうか?
サンプルのサイトがあったら張ってもらえないだろうか。
「CommandのCan〜状態更新の際CommandのRaiseCanExecuteChangedを呼ぶ」
これをやるためには、MenuItem の Command にバインディングする必要があるだろうが、ダイアログの表示はコード・ビハインドでやるという理解でよいでしょうか?
質問ばかりですまんです。
642デフォルトの名無しさん
2013/04/01(月) 19:58:53.84 MenuItemのIsEnabledにコマンドの可否状態が反映されないって言うからMenuItemにコマンドはバインドした状態で反映されないって言ってるんじゃなかったの?
それともコマンドをMenuItemにバインドせずにMenuItemに反映されないって言ってるの?
ダイアログの表示ならコマンドで叩かれたVMからVへメッセージ飛ばしてやるんだろ
そのために確認用のトリガとアクション書いたんじゃないのか
それともコマンドをMenuItemにバインドせずにMenuItemに反映されないって言ってるの?
ダイアログの表示ならコマンドで叩かれたVMからVへメッセージ飛ばしてやるんだろ
そのために確認用のトリガとアクション書いたんじゃないのか
643639
2013/04/01(月) 23:25:33.35 質問の仕方がまずかったかな。
IsEnabled と具体的なプロパティを書くのではなくて、
MenuItem の活性・不活性に CanXXXX が反映されない
と書けばよかった。
コードはリンク先に書いてあるのとほとんど同じ。
"Interaction.Triggers"に設定していあるのであって、
MenuItem の Command にはバインドされてない。
質問をかえれば、リンク先のようなコードを書いたが、
これでは SetDefaultColorCommand の CanSetDefaultColor
が MenuItem の状態(活性・不活性)に反映されません。
どうしたらいいでしょうか?
って感じです。
IsEnabled と具体的なプロパティを書くのではなくて、
MenuItem の活性・不活性に CanXXXX が反映されない
と書けばよかった。
コードはリンク先に書いてあるのとほとんど同じ。
"Interaction.Triggers"に設定していあるのであって、
MenuItem の Command にはバインドされてない。
質問をかえれば、リンク先のようなコードを書いたが、
これでは SetDefaultColorCommand の CanSetDefaultColor
が MenuItem の状態(活性・不活性)に反映されません。
どうしたらいいでしょうか?
って感じです。
644デフォルトの名無しさん
2013/04/02(火) 01:20:28.31 >>643
MenuItemはLivetのメッセージ機構なんて知らないし
DirectInteractionMessageにもコマンドの状態を反映させる仕組みは無いから
自分でやらなきゃならんだろうな。
VMにプロパティを用意してIsEnabledにバインドするとか
コマンドの状態をIsEnabledに反映させるBehaviorでも書けば?
MenuItemはLivetのメッセージ機構なんて知らないし
DirectInteractionMessageにもコマンドの状態を反映させる仕組みは無いから
自分でやらなきゃならんだろうな。
VMにプロパティを用意してIsEnabledにバインドするとか
コマンドの状態をIsEnabledに反映させるBehaviorでも書けば?
645デフォルトの名無しさん
2013/04/02(火) 13:33:43.91 LivetのCommandにはCanExecuteプロパティあるからIsEnabledにそれをバインドするのがいいだろう
647デフォルトの名無しさん
2013/04/05(金) 08:36:23.77 Livetの0.98辺りの時に書いてたソースコード、
今のバージョンだとそのまま使えないんだな…
DispatcherCollectionとかWindowMessageActionとか、
コンストラクタに渡せるパラメータの型とか順番とか、すっかり変わっちゃってる
今のバージョンだとそのまま使えないんだな…
DispatcherCollectionとかWindowMessageActionとか、
コンストラクタに渡せるパラメータの型とか順番とか、すっかり変わっちゃってる
648デフォルトの名無しさん
2013/04/08(月) 17:23:05.27 Livet .NET4.5で、読み取り専用のスレッドセーフなコレクションをModelに持たせたいんですけど
ObservableSynchronizedCollectionをラップするクラスを自作するしかありませんか?
ObservableSynchronizedCollectionをラップするクラスを自作するしかありませんか?
649デフォルトの名無しさん
2013/04/08(月) 19:50:30.83 MVVMだのスレッドセーフだの言う前にマルチスレッドをちゃんと理解しろよ
読み取り専用ならスレッドセーフだからReadOnlyCollection<T>でいい
読み取り専用ならスレッドセーフだからReadOnlyCollection<T>でいい
650デフォルトの名無しさん
2013/04/08(月) 20:35:10.02 読取専用のコレクションは変更されないわけじゃないぞ
651デフォルトの名無しさん
2013/04/08(月) 20:47:02.14 さすがにそれは無理があるだろ…
それに、随時少しずつ変更されるんじゃなくて時々ゴソっと入れ替わるだけなら
Observable*使わなくてもコレクションごと差し替えてしまえばいい
それに、随時少しずつ変更されるんじゃなくて時々ゴソっと入れ替わるだけなら
Observable*使わなくてもコレクションごと差し替えてしまえばいい
652デフォルトの名無しさん
2013/04/08(月) 21:01:42.99 っていうか作法的には>>651のやり方の方が正しく「スレッドセーフ」だと思う
Observable*使うと、連続してコレクションを変更するときに変更途中の変な状態が晒されちゃうよ
決してObservableSynchronizedCollectionなら解決するという問題ではなく
Observable*使うと、連続してコレクションを変更するときに変更途中の変な状態が晒されちゃうよ
決してObservableSynchronizedCollectionなら解決するという問題ではなく
653デフォルトの名無しさん
2013/04/08(月) 21:35:22.96 一括で変化させるのではなく、逐一反映させたいのです。
その為読み取り専用ラッパもINotify〜でないといけません。
その為読み取り専用ラッパもINotify〜でないといけません。
654デフォルトの名無しさん
2013/04/11(木) 14:22:53.29 Livetプロジェクトを作った時にできるInfrastructureAssembliesフォルダは何のためにあるの?
655654
2013/04/11(木) 14:37:04.33 すいません。必要なDLLとクイックヒントのXMLっぽい事は分かりました。
でもLivet.Design.dllが何の役割があるのか分かりません。
でもLivet.Design.dllが何の役割があるのか分かりません。
656デフォルトの名無しさん
2013/04/13(土) 02:18:05.29 >>648
ReadOnlyObservableCollection
ReadOnlyObservableCollection
657デフォルトの名無しさん
2013/04/15(月) 14:41:24.53 昔の0.9xのLivetで開発してたもので、画面描画が完了したタイミングでアニメーション開始させるために
DispatcherHelper.BeginInvoke(action, DispatcherPriority.Render);
みたいに書いてたのがあるんだけど(actionはアニメーション開始させる処理)、
今のLivetだと「BeginInvokeは古い形式です」とかいう警告になってしまう。
まぁ、警告だからコンパイルできるし実行もできるんだけど…
警告出ない、古くない形式ってどう書けばいいんだろう?
DispatcherHelper.BeginInvoke(action, DispatcherPriority.Render);
みたいに書いてたのがあるんだけど(actionはアニメーション開始させる処理)、
今のLivetだと「BeginInvokeは古い形式です」とかいう警告になってしまう。
まぁ、警告だからコンパイルできるし実行もできるんだけど…
警告出ない、古くない形式ってどう書けばいいんだろう?
658デフォルトの名無しさん
2013/04/16(火) 00:44:11.22 UIDispatcherプロパティからBeginInvokeだったと思う。
659デフォルトの名無しさん
2013/04/16(火) 07:45:34.55660デフォルトの名無しさん
2013/05/02(木) 16:37:49.02 MVVMでの非同期処理をする場合について質問なんですが
MはUIスレッドを意識せずプロパティやコレクションを変更し
それを監視してるVMが適宜UIスレッドにディスパッチする
という感じでするのでしょうか?
MはUIスレッドを意識せずプロパティやコレクションを変更し
それを監視してるVMが適宜UIスレッドにディスパッチする
という感じでするのでしょうか?
661デフォルトの名無しさん
2013/05/02(木) 17:18:30.55 UIスレッドというものはView側の都合だからそんな感じだな
VかVMあたりだろう
VかVMあたりだろう
662デフォルトの名無しさん
2013/05/08(水) 13:29:53.61 Livetの公式ページが404 File Not Foundになってる…
663デフォルトの名無しさん
2013/05/08(水) 14:57:34.62 よくあること
664デフォルトの名無しさん
2013/05/10(金) 06:05:27.27 よくあるのか
たまにしか見に行かないから、この1年半くらいで初めてだった
そのうち直るのかな
たまにしか見に行かないから、この1年半くらいで初めてだった
そのうち直るのかな
665デフォルトの名無しさん
2013/05/14(火) 17:27:08.94 @merancronと@ugaya40のサイレントバトルがかなり面白い
666デフォルトの名無しさん
2013/05/17(金) 06:09:53.49 Livetのページ、1週間以上経ってもまだ404 File Not Foundなんだが閉鎖しちゃった?
それとも移転したのか?
閉鎖にしても移転にしても何かその旨書いといて欲しい
しかしユーザー困るな
それとも移転したのか?
閉鎖にしても移転にしても何かその旨書いといて欲しい
しかしユーザー困るな
667デフォルトの名無しさん
2013/05/17(金) 14:40:36.69 >>666
たぶんサーバーの料金払ってないだけ
たぶんサーバーの料金払ってないだけ
668デフォルトの名無しさん
2013/05/17(金) 15:27:29.29 MVPなんだからAzureの無料枠ぐらいもらってるだろうに……
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 今年の漢字 [ぐれ★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★4 [蚤の市★]
- あぼーん
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ★3 [冬月記者★]
- 今年の漢字は「熊」に決定! 相次ぐクマ被害 去年は「金」 [冬月記者★]
- 【老舗文具メーカー】「生成AIで制作していた」――サクラクレパス、“AI疑惑”ポスターの調査結果を報告 ★2 [ぐれ★]
- 一人殺したい奴がいる
- __トランプ、G7に代わる「Core 5」構想、米 中 露 印 日をまとめる巨大枠組み、世界秩序の再編につながる可能性 [827565401]
- 素手でギリ勝てる動物
- 【速報】今年の漢字、「熊」!wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 残クレタワマン、始まるwwwwwwwwwwwwwwwwwwwwwwwww [329329848]
- 【速報】今年のゲームオブザイヤー、Clair Obscur: Expedition 33 [779938112]
