0

私はこのテーマについて多くの異なる情報を見ましたが、何も助けにはなりませんでした。

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

クロージングでこの問題を解決する方法を知っていますOpenFileDialogか?

4

2 に答える 2

0

ここでメソッドとして作成することは、あなたが探しているものの線に沿ってあなたを導くかもしれない何かです

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


        if (d.ShowDialog() == true)
        {
            //set your variable true
        }
        else
        {
            //set your variable false
        }
    }
于 2011-12-27T19:06:06.363 に答える
0

OKで、状態に関係なく常にCANCELボタンが有効になっている場合、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]ボタンと[キャンセル]ボタンが特定のモデル条件下でのみ有効になっている場合は、ModelViewと対話するように設定します。

于 2011-12-27T19:09:13.740 に答える