タグ付けされた質問 「mvvm」

Model-View-ViewModel(MVVM)は、プレゼンテーションロジック(そのViewModel)を介してデータ(モデル)からUI(ビュー)を分離するユーザーインターフェイスを実装するためのアーキテクチャ設計パターンです。

25
MVCとMVVMの違いは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6か月前に閉鎖。 標準の「Model View Controller」パターンとMicrosoftのModel / View / ViewModelパターンに違いはありますか?

14
INotifyPropertyChangedとViewModelのDependencyProperty
Model-View-ViewModelアーキテクチャのWPFアプリケーションにViewModelを実装する場合、データバインド可能にする方法は主に2つあるようです。DependencyPropertyViewがバインドするプロパティに使用する実装を見てきましたが、INotifyPropertyChanged代わりにViewModel実装を見てきました。 私の質問は、どちらを優先するかです。パフォーマンスに違いはありますか?ViewModelの依存関係をWPFに与えることは本当に良い考えですか?設計を決定するとき、他に何を考慮する必要がありますか?

30
MVVMでPasswordBoxにバインドする方法
Pへのバインドに関する問題に遭遇しましたasswordBox。これはセキュリティリスクのようですが、MVVMパターンを使用しているため、これをバイパスしたいと思います。私はここでいくつかの興味深いコードを見つけました(これを使用した人はいますか? http://www.wpftutorial.net/PasswordBox.html 技術的には素晴らしいように見えますが、パスワードを取得する方法がわかりません。 私は基本的に自分のLoginViewModelfor Usernameとにプロパティを持っていますPassword。Username正常であり、そのままTextBoxです。 上記のコードを使用して、これを入力しました <PasswordBox ff:PasswordHelper.Attach="True" ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/> 私が持っていたときPasswordBoxのようにTextBoxし、Binding Path=Passwordその後、私の中のプロパティがLoginViewModel更新されました。 私のコードは非常にシンプルです。基本的にはのCommandがありますButton。押すとCanLogin呼び出され、trueを返すと呼び出されますLogin。 あなたは私が私の財産をチェックするのを見ることができますUsernameここで作品。 ではLoginI私のサービスAに沿って送信UsernameしてPassword、Username私からのデータが含まれていますViewが、PasswordありますNull|Empty private DelegateCommand loginCommand; public string Username { get; set; } public string Password { get; set; } public ICommand LoginCommand { get { if (loginCommand == null) { loginCommand = new DelegateCommand( Login, CanLogin …
251 c#  wpf  mvvm  wpf-controls  passwords 

26
ViewModelはどのようにフォームを閉じる必要がありますか?
WPFとMVVMの問題を学習しようとしていますが、問題が発生しました。この質問は似ていますが、これとまったく同じではありません(handling-dialogs-in-wpf-with-mvvm) ... MVVMパターンを使用して書かれた「ログイン」フォームがあります。 このフォームには、通常のデータバインディングを使用してXAMLのビューにバインドされているユーザー名とパスワードを保持するViewModelがあります。また、通常のデータバインディングを使用して、フォームの[ログイン]ボタンにバインドされている[ログイン]コマンドもあります。 「Login」コマンドが起動すると、ViewModelの関数が呼び出され、ネットワークを介してデータが送信されてログインします。この関数が完了すると、2つのアクションがあります。 ログインが無効でした-メッセージボックスを表示するだけで問題ありません ログインは有効でした。ログインフォームを閉じ、trueを返す必要がありDialogResultます... 問題は、ViewModelが実際のビューについて何も知らないため、ビューを閉じて特定のDialogResultを返すように指示するにはどうすればよいですか?CodeBehindにコードを貼り付けたり、ViewをViewModelに渡したりすることはできますが、MVVMのポイント全体を完全に無効にするようです... 更新 結局、MVVMパターンの「純粋さ」に違反し、ビューにClosedイベントを発行させ、Closeメソッドを公​​開させました。その後、ViewModelは単にを呼び出しますview.Close。ビューは、インターフェースを介してのみ認識され、IOCコンテナーを介して配線されるため、テスト性や保守性が失われることはありません。 受け入れられた回答が-5票であるのはかなりばかげているようです!「純粋」でありながら問題を解決することで得られる良い気持ちはよく知っていますが、1行のメソッドを回避するためだけに200行のイベント、コマンド、および動作を考えているのは、私だけではありません。 「パターン」と「純度」の名前は少しばかげています...
247 c#  wpf  mvvm 

22
MVVM:最初から最後までチュートリアル?
ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 私はC#/ Windowsフォームのプログラマーで、5年以上の経験があります。MVVM(Model-View-ViewModel)デザインパターンを使用してWPFを調査しています。チュートリアルをインターネットで検索しました。ジェイソン・ドリンガーの素晴らしいビデオを全部見てきました。私は多くを見つけましたが、最初から最後まで私を連れて行くものを見つけていません。私が本当に欲しいのは、以前のWPFの知識を前提としないチュートリアルです。 学ぶのに役立つお気に入りのWPF-MVVMチュートリアルは何ですか?
243 c#  .net  wpf  mvvm 

20
WPFツリービューのSelectedItemへのデータバインディング
WPFツリービューで選択されているアイテムを取得するにはどうすればよいですか?バインドしたいので、これをXAMLで行いたいと思います。 存在するとは思われるかもしれませんがSelectedItem、明らかに存在しないのは読み取り専用であるため、使用できません。 これは私がしたいことです: <TreeView ItemsSource="{Binding Path=Model.Clusters}" ItemTemplate="{StaticResource ClusterTemplate}" SelectedItem="{Binding Path=Model.SelectedCluster}" /> をSelectedItemモデルのプロパティにバインドします。 しかし、これは私にエラーを与えます: 'SelectedItem'プロパティは読み取り専用であり、マークアップから設定することはできません。 編集: OK、これは私がこれを解決した方法です: <TreeView ItemsSource="{Binding Path=Model.Clusters}" ItemTemplate="{StaticResource HoofdCLusterTemplate}" SelectedItemChanged="TreeView_OnSelectedItemChanged" /> そして私のxamlのcodebehindfileで: private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { Model.SelectedCluster = (Cluster)e.NewValue; }
240 c#  wpf  mvvm  treeview  selecteditem 

23
MVVMを使用したWPFでのダイアログの処理
WPFのMVVMパターンでは、ダイアログの処理はより複雑な操作の1つです。ビューモデルはビューについて何も知らないので、ダイアログ通信は興味深いものになる可能性があります。ICommandビューを呼び出すとダイアログが表示されることを公開できます。 誰かがダイアログからの結果を処理するための良い方法を知っていますか?私はのようなウィンドウダイアログについて話しているMessageBox。 これを行う方法の1つは、ダイアログが必要なときにビューがサブスクライブするビューモデルのイベントを使用することでした。 public event EventHandler<MyDeleteArgs> RequiresDeleteDialog; これは問題ありませんが、ビューにはコードを必要とすることを意味します。

13
MVVMのどのフレームワークを使用すればよいですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 MVVMモデルでアプリケーションを開発していますが、使用するフレームワークを選択する必要があるところまで到達しました。 可能なオプションには次のものがあります。 MVVMツールキット MVVM Foundation WPFアプリケーションフレームワーク(WAF) ライトMVVM カリバーン シンチ プリズム ReactiveUI あなたの経験では、どちらが良いですか?
233 wpf  mvvm  frameworks 

5
Vue.js-v-modelとv-bindの違い
私はオンラインコースでVueを学習しています。インストラクターは、デフォルト値で入力テキストを作成する練習をしてくれました。v-modelを使用して完成させましたが、インストラクターがv-bind:valueを選択しましたが、その理由がわかりません。 誰かがこれらの2つの違いと、それぞれを使うほうが良いときについて簡単な説明をくれますか?

4
MVC、MVP、MVVMの設計パターンのコーディングの違いは何ですか?
「MVC、MVP、MVVMの設計パターンの違いは何ですか」というフレーズを使用してGoogleを検索すると、理論的にはMVC MVPとMVVMの設計パターンの違いを説明するいくつかのURLが得られることがあります。 MVP データコンテキストを介したバインドが不可能な状況で使用します。Windowsフォームはこれの完璧な例です。ビューをモデルから分離するには、プレゼンターが必要です。ビューはプレゼンターに直接バインドできないため、インターフェイス(IView)を介してビューに情報を渡す必要があります。 MVVM データコンテキストによるバインドが可能な状況で使用します。どうして?各ビューのさまざまなIViewインターフェイスが削除され、維持するコードが少なくなります。MVVMが可能な例には、Knockoutを使用したWPFおよびJavaScriptプロジェクトが含まれます。 MVC ビューとプログラムの残りの部分との間の接続が常に利用できるとは限らない(そして、MVVMまたはMVPを効果的に使用できない)状況で使用します。これは、Web APIがクライアントのブラウザーに送信されるデータから分離されている状況を明確に説明しています。MicrosoftのASP.NET MVCは、このような状況を管理するための優れたツールであり、非常に明確なMVCフレームワークを提供します しかし、理論的にはサンプルコードと共にその違いを説明する記事は1つもありません。 これらの3つのデザインパターン(MVC、MVP、MVVM)の違いについてコードと一緒に説明する記事を入手できたら、本当に嬉しいです。 これら3つのデザインパターン(MVC、MVP、MVVM)によって実装された3つの類似したCRUDアプリのソースコードを手に入れたいのですが。コードを確認して、これら3つの設計パターン(MVC、MVP、MVVM)のコードをどのように記述するかを理解できるようにします。 したがって、これらの3つの設計パターン(MVC、MVP、MVVM)でコードがどのように異なるかを説明する記事が存在する場合は、その記事にリダイレクトしてください。

5
KnockOutJS-単一のビュー内の複数のViewModel
アプリケーションが非常に大きくなり、単一のViewModelで各ビューを処理するには大きすぎると思っています。 したがって、複数のViewModelを作成し、それらすべてを単一のViewにロードするのがどれほど難しいか疑問に思っています。XのViewModelデータをYのViewModelデータに渡すこともできるようにする必要があるので、個々のViewModelが相互に通信できるようにするか、少なくとも相互に認識できる必要があることに注意してください。 たとえば、私は<select>ドロップダウンを持っています、その選択ドロップダウンには選択された状態があり<select>、別のViewModel ....で別のAjax呼び出しにで選択されたアイテムのIDを渡すことができます。 単一のビューで多数のViewModelを処理する上での重要な点は高く評価されています:)

7
AngularJSのディレクティブからディレクティブを追加する
宣言されている要素にさらにディレクティブを追加する処理を行うディレクティブを作成しようとしています。たとえばdatepicker、datepicker-languageとの追加を処理するディレクティブを作成したいとしng-required="true"ます。 これらの属性を追加してから使用する$compileと、明らかに無限ループが生成されるので、必要な属性をすでに追加しているかどうかを確認しています。 angular.module('app') .directive('superDirective', function ($compile, $injector) { return { restrict: 'A', replace: true, link: function compile(scope, element, attrs) { if (element.attr('datepicker')) { // check return; } element.attr('datepicker', 'someValue'); element.attr('datepicker-language', 'en'); // some more $compile(element)(scope); } }; }); もちろん、$compile要素を指定しない場合、属性は設定されますが、ディレクティブはブートストラップされません。 このアプローチは正しいですか、それとも間違っていますか?同じ動作を実現するより良い方法はありますか? UDPATE:$compileこれを達成する唯一の方法であるという事実を踏まえて、最初のコンパイルパスをスキップする方法はありますか(要素に複数の子が含まれる場合があります)?たぶん設定terminal:true? UPDATE 2:ディレクティブをselect要素に入れてみましたが、予想どおり、コンパイルが2回実行されoptionます。つまり、予想されるの数が2倍になります。

4
WPF ComboBoxをカスタムリストにバインドする
SelectedItem / SelectedValueを更新していないように見えるComboBoxがあります。 ComboBox ItemsSourceは、一連のRAS電話帳エントリをCollectionViewとしてリストするViewModelクラスのプロパティにバインドされています。次に、ViewModelのSelectedItemまたはSelectedValue別のプロパティに(別々に)バインドしました。データバインディングによって設定された値をデバッグするために、saveコマンドにメッセージボックスを追加しましたが、SelectedItem/ SelectedValueバインディングが設定されていません。 ViewModelクラスは次のようになります。 public ConnectionViewModel { private readonly CollectionView _phonebookEntries; private string _phonebookeEntry; public CollectionView PhonebookEntries { get { return _phonebookEntries; } } public string PhonebookEntry { get { return _phonebookEntry; } set { if (_phonebookEntry == value) return; _phonebookEntry = value; OnPropertyChanged("PhonebookEntry"); } } } …
183 c#  wpf  data-binding  mvvm  combobox 

6
[Vue warn]:要素が見つかりません
私はVuejsを使用しています。これは私のマークアップです: <body> <div id="main"> <div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div> </div> </body> これは私のコードです: var main = new Vue({ el: '#main', data: { currentActivity: 'home' } }) ; ページをロードすると、次の警告が表示されます。 [Vue warn]: Cannot find element: #main 何が悪いのですか?
166 javascript  mvvm  vue.js 

17
MVVMでは、ViewModelまたはModelはINotifyPropertyChangedを実装する必要がありますか?
私がこれまでに取り組んだほとんどのMVVMの例にはModel実装 INotifyPropertyChangedがありましたが、Josh SmithのCommandSinkの例で はViewModelが実装されていINotifyPropertyChangedます。 私はまだMVVMの概念を認識的にまとめているので、次の場合はわかりません。 あなたは配置する必要がありINotifyPropertyChanged得るためのViewModelにCommandSink仕事に これは単なる標準の逸脱であり、それは本当に問題ではありません あなたは常にモデルを実装する必要があり、INotifyPropertyChangedこれは単なるコードミスからアプリケーションに開発された場合に修正される間違いです あなたが取り組んできたMVVMプロジェクトに関する他の経験は何ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.