2011-10-30 9 views
0

私は既にこのようないくつかの質問があることを知っていますが、私は何をすべきか分からない、新しいウィンドウを開くボタンがあります。純粋なxamlでこれを行いますか?私は、CodeBehindまたはViewModelから呼び出すことなくダイアログをどのように開くことができるのか分かりません。私はこれのためにmvvmのツールキットを使用していません。あなたはこのように行うことができますボタンをクリックして表示ボタンをクリックMVVM

+0

新しいウィンドウはポップアップウィンドウですか、完全にスタンドアロンの非モーダルウィンドウですか? – sll

答えて

0

....

あなたは<x:Code>を使用することができます。

<Button Content="OK" Click="Button_Click"/> 
<x:Code> 
    private void Button_Click(object sender,RoutedEventArgs e) 
    { 
    MessageBox.Show("Hello"); 
    } 
</x:Code> 

これを行うための標準的な方法をcommandsです。

+0

しかし、私がコマンドを使用する場合、私はViewModelでそれを作成する必要があります。新しいウィンドウを表示する必要があるので、これはMVVMを破ります:s –

+4

これはまだ効果的なコードです - xaml側に移動します。 .. –

+0

私はMVVMフレームワークを使用していないので、私は好きだったように素晴らしくはありませんでしたが、これはもっとも簡単な解決策でした。 –

3

CodeBehindまたはViewModelから呼び出すことなくダイアログを開く方法がわかりません。

通常、コードでこれを行いますが、ほとんどのMVVMフレームワークではこれを抽象化する方法が提供されています。

これは、通常、何らかのサービスロケーション(ViewServiceなどを「ViewService」などに注入する)によって処理されます。もう1つの選択肢は、MVVM Lightのアプローチである何らかの形式のメッセージングを使用することです。

これらのアプローチの利点は、Viewの知識なしでVMを書き込むことができることです。コマンドを(ViewModelの)コマンドでトリガし、正しいビューはあなたのために開かれます。これにより、ビューの依存関係がVMレイヤーに保持されます。

関連する問題