gpt4 book ai didi

c# - WPF-如何从 View 而不是viewmodel显示自定义异常

转载 作者:行者123 更新时间:2023-12-03 10:38:18 25 4
gpt4 key购买 nike

我有一个WPF MMVM应用程序,并且我们正在从viewmodel方法获取xml解析器异常。但是问题是我不想显示viewmodel的异常。我想从 View 显示消息(从 View 调用CustomMessageBox.Show())

按照下面的代码,我从 View 模型catch块调用CustomMessageBox.Show()
如何从CustomMessageBox.Show()xaml.cs调用xaml

我们如何通知该 View 并调用CustomMessageBox.Showfrom View ?该代码段在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");
}

最佳答案

如果您使用的是Messenger/事件聚合器(例如MVVM Light),则可以将包含异常详细信息的消息从 View 模型发送到 View ,该消息在接收到时可以触发显示消息框。

使用MVVM Light,看起来可能如下所示:

View 模型:

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是一个自定义类,其中包含有关需要向用户显示的异常的任何详细信息。

关于c# - WPF-如何从 View 而不是viewmodel显示自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16030012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com