1

WPF MMVM アプリケーションがあり、viewmodel メソッドから xml パーサー例外が発生しています。しかし問題は、ビューモデルからの例外を表示したくないことです。ビューからのメッセージを表示したい(ビューCustomMessageBox.Show()からの呼び出し)

以下のコードに従って、CustomMessageBox.Show()ビュー モデルの catch ブロックから呼び出しています。CustomMessageBox.Show()またはからどのように呼び出すことができますxaml.csxaml?

これについてビューに通知し、ビューを呼び出すにはどうすればよいでしょCustomMessageBox.Showfromうか。このコード スニペットは、WPF コマンドで呼び出されます。

現在の実装:

try
{
  var xamlReader = XamlReader.Parse(xamlText);
  var gb = modelTemplate.GetGraphicalObject("Icons");
  var strings = new Dictionary<string, string> { { "Default", xamlText } };
  gb.UpdateGraphicalObject(strings, null, null);
  if (xamlReader != null)
  {
    var view = new Viewbox();
    view.Child = (UIElement)xamlReader;
    view.Stretch = Stretch.Uniform;
    modelVM.Icon = view;
    }
  }
  catch (XamlParseException)
  {
    CustomMessageBox.Show("Invalid XAML file specified.", Properties.Resources.NextGenSim, MessageBoxButton.OK, MessageBoxImage.Error);
    //throw new XamlParseException("Invalid XAML file specified");
  }
4

2 に答える 2

1

メッセンジャー/イベント アグリゲーター (MVVM Light など) を使用している場合は、例外の詳細を含むメッセージをビューモデルからビューに送信できます。これを受信すると、メッセージ ボックスが表示されます。

MVVM Lightを使用すると、次のようになります。

ビューモデル:

Messenger.Default.Send(new ErrorMessage("Invalid XAML file specified.",
                       Properties.Resources.NextGenSim));

意見

Messenger.Default.Register<ErrorMessage>(this, message =>
    {
        CustomMessageBox.Show(message.Message, message.Details, 
                              MessageBoxButton.OK, MessageBoxImage.Error);
    }

ErrorMessage は、ユーザーに表示する必要がある例外に関する詳細を含むカスタム クラスです。

于 2013-04-16T07:13:48.817 に答える