2011-12-27 10 views
0

このテーマに関する多くの異なる情報を見ましたが、何も私を助けませんでした。OpenFileDialogを関数okで閉じ、MVVMパターンsilverlightでキャンセルするにはどうすればよいですか?

  1. あなたはどう思いますか?おそらくOpenFileDialogでMVVMよりも単純なパターンを使用する方が良いでしょうか?
  2. 私は、2つの関数OkとCancelを持っています。いずれも(this.DialogResult = true)または (this.DialogResult = false)です。私はMVVMのパターンでそれを行う必要があります。今はvalue -> (bool cls = true)を使用しており、DialogResult = {Binding cls}にバインドして、このプロパティを別の機能で変更しても機能しません。私はいくつかの例外があります。

OpenFileDialogを閉じてこの問題を解決する方法を知っていますか?

+0

正確なコードと正確な例外を最初に貼り付けます..ありがとう – MethodMan

答えて

0

ここでの方法は、あなたがOKボタンをキャンセルしている場合は、

void OpenDialogAction(object param) 
    { 
     //Add code here 
     OpenFileDialog d = new OpenFileDialog(); 


     if (d.ShowDialog() == true) 
     { 
      //set your variable true 
     } 
     else 
     { 
      //set your variable false 
     } 
    } 
0

探しているものの線に沿ってあなたを得ることが何かあるといつも私は、状態に関係なく有効になっています作成それらをMVVMデザインパターンに組み込む際の価値はほとんどありません。 Silverlightはしませんが、WPFと似ていると仮定すると、[キャンセル]ボタンの[プロパティ]ペインでIsCancelプロパティをチェックすると、ダイアログが自動的に閉じられ、ボタンをクリックするとDialogResult = falseが設定されます。あなたのOKボタンには、このような単純なものを追加してください。

<Button ...Your normal settings here and then... 
      Click="DoneButtonClickHandler"> 

次にコードがあります。

private void DoneButtonClickHandler(object sender, RoutedEventArgs e) 
    { 
     DialogResult = true; 
    } 

私はいくつかの純粋主義者は、背後にあるコードでは何もしたくないが、私には、単純により保守コードは、より良い(とMVVMを実装するポイント)であることを知っています。私のOKボタンとCancelボタンが特定のモデル条件の下でのみ有効になっている場合は、ModelViewとやりとりするように設定しています。

関連する問題