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

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

3
AndroidViewModelとViewModel
Androidアーキテクチャコンポーネントライブラリの導入に伴い、AndroidViewModelおよびを含むいくつかの新しいクラスが導入されましたViewModel。しかし、これら2つのクラスの違いを理解するのに苦労しています。ドキュメントは簡潔に説明しAndroidViewModel、次のように: アプリケーションコンテキスト対応 ViewModel 簡潔に感謝しますが、これは正確に何を意味していますか?いつ使用AndroidViewModelするViewModelか、その逆かを選択する必要があるのはいつですか?

3
MVVMを使用したwpfでのダイアログの良いまたは悪い習慣?
最近、wpfアプリの追加および編集ダイアログの作成に問題がありました。 私のコードでやりたいのは、このようなものだけでした。(私は主にmvvmでviewmodel最初のアプローチを使用します) ダイアログウィンドウを呼び出すViewModel: var result = this.uiDialogService.ShowDialog("Dialogwindow Title", dialogwindowVM); // Do anything with the dialog result それはどのように機能しますか? まず、ダイアログサービスを作成しました。 public interface IUIWindowDialogService { bool? ShowDialog(string title, object datacontext); } public class WpfUIWindowDialogService : IUIWindowDialogService { public bool? ShowDialog(string title, object datacontext) { var win = new WindowDialog(); win.Title = title; win.DataContext …
148 c#  .net  wpf  mvvm  modal-dialog 

12
WPF / MVVM Light Toolkitでウィンドウを閉じるイベントを処理する
Closing最終的に確認メッセージを表示するか、終了をキャンセルするために、ウィンドウのイベント(ユーザーが右上の「X」ボタンをクリックしたとき)を処理したいと思います。 コードビハインドでこれを行う方法を知っています。Closingウィンドウのイベントにサブスクライブし、CancelEventArgs.Cancelプロパティを使用します。 しかし、私はMVVMを使用しているので、それが良いアプローチであるかどうかはわかりません。 ClosingイベントをCommandViewModelのにバインドするのが良い方法だと思います。 私はそれを試しました: <i:Interaction.Triggers> <i:EventTrigger EventName="Closing"> <cmd:EventToCommand Command="{Binding CloseCommand}" /> </i:EventTrigger> </i:Interaction.Triggers> RelayCommandViewModelに関連付けられていますが、機能しません(コマンドのコードは実行されません)。
145 c#  wpf  xaml  mvvm  mvvm-light 

9
MVVMテンプレートの良い例
私は現在、Microsoft MVVMテンプレートを使用していますが、詳細な例が不足していることに不満を感じています。含まれているContactBookの例はコマンドの処理をほとんど示していません。また、コンセプトが類似しているが少し複雑なアプローチを使用していても複雑さに欠けているMSDN Magazineの記事からの唯一の例を見つけました。少なくとも基本的なCRUD操作とダイアログ/コンテンツの切り替えを示す適切なMVVMの例はありますか? 皆の提案は本当に役に立ちました、そして私は良いリソースのリストを編集し始めます フレームワーク/テンプレート WPFモデル-ビュー-ビューモデルツールキット MVVM Lightツールキット プリズム カリバーン シンチ お役立ち記事 Model-View-ViewModelデザインパターンを使用したWPFアプリ .NET 3.5でのデータ検証 ViewModelを使用して意味のある検証エラーメッセージを提供する アクションベースのViewModelおよびモデルの検証 ダイアログ MVVMのコマンドバインディング WPFのMVCだけではありません MVVM + Mediatorサンプルアプリケーション スクリーンキャスト Model-View-ViewModelのJason Dolinger 追加のライブラリ WPF弟子の改善されたMediatorパターン実装(これは、より複雑なナビゲーションを持つアプリケーションにこれを強くお勧めします) MVVM Light Toolkitメッセンジャー
141 wpf  mvvm 

2
Prism for WPFとは何ですか?
最近プリズムと呼ばれるものに出会いました。プロジェクトを実行するマイクロソフトは、それを次のように説明しています WPFおよびSilverlightでの複合アプリケーションのガイドライン。 詳細な説明を読んだ後でも、私はそれが実際に何であるかについてほとんど手がかりがありません、私は恐れています。 私はここで、誰かが私にプリズムが実際に何であるか、そしてなぜそれを学ぶべきなのかについての明確な簡潔な説明を与えてくれることを望んでいます。私は数年前からWPF開発者であり、MVVMを公平に使用しており、最近、Prismを使用している人々に遭遇しましたが、個人的にはここでのループから少し抜け出したと感じています。 特に、次の点について疑問に思っています。 Prismは、MSDNサイトに記載されているとおり、文字通り(または主に)小冊子ですか?それにはライブラリが含まれていますか? PrismはMVVMフレームワークですか?他の人や自分のものよりも「公式のMicrosoft MVVMフレームワーク」として使用する必要がありますか? 依存性注入を提供しますか?このようにMEFと関係がありますか? WPF / Silverlightの開発者として、Prismの機能について知っておくべきことは他にもあります。
137 wpf  mvvm  prism 

21
ビューモデルからWPFのTextBoxにフォーカスを設定します
私にはa TextBoxとa があるとButton思います。 ボタンのクリック時に条件を確認し、条件がfalseであることが判明した場合は、ユーザーにメッセージを表示してから、カーソルをTextBoxコントロールに設定する必要があります。 if (companyref == null) { var cs = new Lipper.Nelson.AdminClient.Main.Views.ContactPanels.CompanyAssociation(); MessageBox.Show("Company does not exist.", "Error", MessageBoxButton.OK, MessageBoxImage.Exclamation); cs.txtCompanyID.Focusable = true; System.Windows.Input.Keyboard.Focus(cs.txtCompanyID); } 上記のコードはViewModelにあります。 CompanyAssociationビュー名です。 しかし、カーソルはに設定されていませんTextBox。 xamlは次のとおりです。 <igEditors:XamTextEditor Name="txtCompanyID" KeyDown="xamTextEditorAllowOnlyNumeric_KeyDown" ValueChanged="txtCompanyID_ValueChanged" Text="{Binding Company.CompanyId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="{Binding ActualWidth, ElementName=border}" Grid.Column="1" Grid.Row="0" VerticalAlignment="Top" HorizontalAlignment="Stretch" Margin="0,5,0,0" IsEnabled="{Binding Path=IsEditable}"/> <Button Template="{StaticResource …
129 c#  wpf  xaml  mvvm  textbox 

6
読み取り専用GUIプロパティをViewModelに戻す
Viewからのいくつかの読み取り専用の依存関係プロパティの現在の状態を常に把握しているViewModelを書きたいのですが。 具体的には、私のGUIにはFlowDocumentPageViewerが含まれており、これはFlowDocumentから一度に1ページを表示します。FlowDocumentPageViewerは、CanGoToPreviousPageおよびCanGoToNextPageと呼ばれる2つの読み取り専用の依存関係プロパティを公開します。私は自分のViewModelが常にこれら2つのViewプロパティの値を知っていることを望みます。 私はOneWayToSourceデータバインディングでこれを行うことができると考えました: <FlowDocumentPageViewer CanGoToNextPage="{Binding NextPageAvailable, Mode=OneWayToSource}" ...> これが許可されていれば完璧です。FlowDocumentPageViewerのCanGoToNextPageプロパティが変更されるたびに、新しい値がViewModelのNextPageAvailableプロパティにプッシュダウンされます。 残念ながら、これはコンパイルされません。「CanGoToPreviousPage」プロパティは読み取り専用であり、マークアップから設定できないというエラーが表示されます。どうやら読み取り専用プロパティは、そのプロパティに関して読み取り専用のデータバインディングでさえも、いかなる種類のデータバインディングもサポートしていません。 ViewModelのプロパティをDependencyPropertiesにして、OneWayバインディングを別の方法で作成することもできますが、関心の分離違反に夢中ではありません(ViewModelは、MVVMデータバインディングが回避するはずのビューへの参照が必要になるでしょう) )。 FlowDocumentPageViewerはCanGoToNextPageChangedイベントを公開していません。また、DependencyPropertyから変更通知を取得するための適切な方法がわからないため、バインドする別のDependencyPropertyを作成する必要があります。 ビューの読み取り専用プロパティの変更をViewModelに通知し続けるにはどうすればよいですか?

3
ViewModelLocatorとは何ですか?DataTemplatesと比較してその長所/短所は何ですか?
誰かがViewModelLocatorとは何か、それがどのように機能するか、DataTemplatesと比較してそれを使用する場合の長所/短所は何かについて簡単な要約を教えてもらえますか? 私はグーグルで情報を見つけようとしましたが、それの多くの異なる実装があり、それが何であるか、それを使用することの賛否両論についての重要なリストはないようです。

11
WPFのMVVM-ViewModelにモデルの変更を警告する方法...または私は?
私はMVVMの記事をいくつか読んでいます。主にこれとこれです。 私の具体的な質問は次のとおりです。モデルの変更をモデルからビューモデルに伝えるにはどうすればよいですか。 ジョシュの記事では、彼がそうしているとは思えません。ViewModelは常にモデルにプロパティを要求します。レイチェルの例では、彼女はモデルを実装INotifyPropertyChangedし、モデルからイベントを発生させていますが、それらはビュー自体が使用するためのものです(これを行う理由の詳細については、記事/コードを参照してください)。 モデルがモデルのプロパティの変更をViewModelに警告する例はどこにもありません。これはおそらくそれが何らかの理由で行われていないのではないかと心配しています。 モデルの変更をViewModelに通知するパターンはありますか? (1)各モデルに1つ以上のViewModelがあると考えられ、(2)ViewModelが1つしかなくても、モデルに対するアクションによって他のプロパティが変更される可能性があるため、このようにする必要があります。 「なぜあなたはそれをしたいのですか?」という形式の回答/コメントがあるのではないかと思います。コメントなので、これが私のプログラムの説明です。私はMVVMを使い始めたばかりなので、おそらく設計全体に問題があります。簡単に説明します。 私は「顧客」や「製品」クラスよりも(少なくとも、私にとっては)興味深いものをプログラミングしています。私はBlackJackをプログラミングしています。 背後にコードがなく、ViewModelのプロパティとコマンドへのバインドに依存しているビューがあります(Josh Smithの記事を参照)。 良くも悪くも、私はモデルのようなだけではないクラスが含まれている必要があることを態度を取ったPlayingCard、Deckだけでなく、BlackJackGameゲーム全体の状態を維持し、そしてプレイヤーがなくなっバストを持っている場合、ディーラーがカードを引くために持って知っているクラス、およびプレーヤーとディーラーの現在のスコア(21未満、21、バストなど)。 BlackJackGame私は「DrawCard」のようなメソッドを公開し、それがいることを私に発生したカードは、以下のような、プロパティを描画する際CardScore、およびIsBust更新されるべきであると、これらの新しい値はViewModelにに伝達。おそらくそれは間違った考えですか? ViewModelがDrawCard()メソッドを呼び出したという態度を取ることができるので、更新されたスコアを要求し、バストであるかどうかを確認する必要があります。意見? 私のViewModelには、トランプの実際の画像(スーツ、ランクに基づく)を取得してビューで使用できるようにするロジックがあります。モデルはこれに関係するべきではありません(おそらく他のViewModelはトランプ画像の代わりに数字を使用するだけです)もちろん、モデルによってはBlackJackゲームの概念さえも持つべきではなく、ViewModelで処理する必要があると言う人もいるでしょう。
112 c#  .net  wpf  mvvm 

23
ディレクティブを使用したAngularJSブラウザーの自動入力回避策
AngularJSでフォームを送信し、ブラウザーにパスワードを記憶する機能を使用し、その後のログイン試行で、ブラウザーにログインフォームにユーザー名とパスワードを入力$scopeさせる場合、自動入力に基づいてモデルは変更されません。 私が見つけた唯一の汚いハックは、次のディレクティブを使用することです: app.directive("xsInputSync", ["$timeout" , function($timeout) { return { restrict : "A", require: "?ngModel", link : function(scope, element, attrs, ngModel) { $timeout(function() { if (ngModel.$viewValue && ngModel.$viewValue !== element.val()) { scope.apply(function() { ngModel.$setViewValue(element.val()); }); } console.log(scope); console.log(ngModel.$name); console.log(scope[ngModel.$name]); }, 3000); } }; }]); 問題はngModel.$setViewValue(element.val());、がelement.val()戻り値に基づいてモデルもビューも変更しないことです。どうすればそれを達成できますか?

9
Android ViewModelの追加引数
AndroidViewModelアプリケーションコンテキストを除いて、カスタムコンストラクターに追加の引数を渡す方法はありますか?例: public class MyViewModel extends AndroidViewModel { private final LiveData<List<MyObject>> myObjectList; private AppDatabase appDatabase; public MyViewModel(Application application, String param) { super(application); appDatabase = AppDatabase.getDatabase(this.getApplication()); myObjectList = appDatabase.myOjectModel().getMyObjectByParam(param); } } そして、カスタムViewModelクラスを使用したい場合は、このコードをフラグメントで使用します。 MyViewModel myViewModel = ViewModelProvider.of(this).get(MyViewModel.class) そのString paramため、カスタムに追加の引数を渡す方法がわかりませんViewModel。アプリケーションコンテキストのみを渡すことができますが、追加の引数は渡せません。私は本当にどんな助けにも感謝します。ありがとうございました。 編集:いくつかのコードを追加しました。私はそれが今より良いことを望みます。

10
MVVMを使用してWPFリストビューアイテムからダブルクリックイベントを発生させる
MVVMを使用するWPFアプリケーションで、リストビューアイテムを持つユーザーコントロールがあります。実行時には、データバインディングを使用して、リストビューをオブジェクトのコレクションで埋めます。 ダブルクリックイベントをリストビューのアイテムにアタッチして、リストビューのアイテムがダブルクリックされると、ビューモデルの対応するイベントが発生し、クリックされたアイテムへの参照を持つようにする正しい方法は何ですか? どのようにすれば、クリーンなMVVMの方法で実行できますか。つまり、ビューの背後にコードがありません。
102 wpf  mvvm 

9
WPF / MVVMアプリケーションで依存性注入を処理する方法
新しいデスクトップアプリケーションを開始していますが、MVVMとWPFを使用してそれを構築したいと考えています。 また、TDDを使用するつもりです。 問題は、IoCコンテナーを使用して、プロダクションコードに依存関係を挿入する方法がわからないことです。 次のクラスとインターフェイスがあるとします。 public interface IStorage { bool SaveFile(string content); } public class Storage : IStorage { public bool SaveFile(string content){ // Saves the file using StreamWriter } } 次にIStorage、依存関係を持つ別のクラスがあります。このクラスがViewModelまたはビジネスクラスであるとします... public class SomeViewModel { private IStorage _storage; public SomeViewModel(IStorage storage){ _storage = storage; } } これにより、モックなどを使用して、ユニットテストが適切に機能することを確認するユニットテストを簡単に作成できます。 問題は、実際のアプリケーションで使用することです。IStorageインターフェイスのデフォルト実装をリンクするIoCコンテナが必要であることはわかっていますが、どうすればよいですか? たとえば、次のxamlがあるとどうなりますか。 <Window …

5
DataContextプロパティを使用してXAMLのウィンドウにViewModelを設定するにはどうすればよいですか?
質問はほとんどすべてを言います。 ウィンドウがあり、完全な名前空間を使用してDataContextをViewModelに設定しようとしましたが、何か間違っているようです。 <Window x:Class="BuildAssistantUI.BuildAssistantWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DataContext="BuildAssistantUI.ViewModels.MainViewModel">
96 .net  wpf  xaml  mvvm 

14
Android MVVMViewModelでコンテキストを取得する方法
AndroidアプリにMVVMパターンを実装しようとしています。ViewModelsには(テストを簡単にするために)Android固有のコードを含めるべきではないことを読みましたが、さまざまなこと(xmlからのリソースの取得、設定の初期化など)にコンテキストを使用する必要があります。これを行うための最良の方法は何ですか?AndroidViewModelアプリケーションコンテキストへの参照があるのを見ましたが、Android固有のコードが含まれているため、ViewModelに含める必要があるかどうかはわかりません。また、これらはアクティビティライフサイクルイベントに関連付けられていますが、コンポーネントのスコープを管理するために短剣を使用しているため、それがどのように影響するかはわかりません。私はMVVMパターンとDaggerを初めて使用するので、助けていただければ幸いです。

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