在WPF应用程序中将文本发送到上层
我正在做一个WPF(不是web)应用程序 三层 EF代码优先 UI层对逻辑层的引用和逻辑层对数据层的引用 现在,我在数据层中有一个异常,我需要根据异常生成的文本显示一个MessageBox 但我不想在数据层中添加对WindowsBase、PresentationCore和PresentationFramework的引用 如何从数据层向UI层发送文本并显示MessageBox 短暂性脑缺血发作 相关代码: 在UI层中在WPF应用程序中将文本发送到上层,wpf,exception,3-tier,Wpf,Exception,3 Tier,我正在做一个WPF(不是web)应用程序 三层 EF代码优先 UI层对逻辑层的引用和逻辑层对数据层的引用 现在,我在数据层中有一个异常,我需要根据异常生成的文本显示一个MessageBox 但我不想在数据层中添加对WindowsBase、PresentationCore和PresentationFramework的引用 如何从数据层向UI层发送文本并显示MessageBox 短暂性脑缺血发作 相关代码: 在UI层中 public void guardar(UserControlClien
public void guardar(UserControlCliente UCCliente)
{
admin.guardarEntidadCliente(UCCliente.textBoxNombre.Text,
UCCliente.textBoxPrimerApellido.Text,
UCCliente.textBoxSegundoApellido.Text,
"Normal",
DateTime.Parse("01/01/2012"),
DateTime.Parse("02/02/2012"),
"obs 1");
}
private void buttonAgregar_Click(object sender, RoutedEventArgs e)
{
guardar(this);
}
在逻辑层中
public void guardarEntidadCliente(String nombre, String app1, String app2, String tipo,
DateTime fechaReg, DateTime fechaUltCita, String obs)
{
Cliente cliente = new Cliente();
cliente.Nombre = nombre;
cliente.Apellido1 = app1;
cliente.Apellido2 = app2;
cliente.Tipo = tipo;
cliente.FechaRegistro = fechaReg;
cliente.FechaUltimaCita = fechaUltCita;
cliente.Observaciones = obs;
ControlDatos cd = new ControlDatos();
cd.agregarCliente(cliente);
}
在数据层中
public void agregarCliente(Cliente cliente)
{
db.Clientes.Add(cliente);
try
{
db.SaveChanges();
}
catch (DbEntityValidationException exc)
{
String mensaje = "";
foreach (var validationErrors in exc.EntityValidationErrors)
foreach (var validationError in validationErrors.ValidationErrors)
mensaje += validationError.ErrorMessage + "\n";
db.Entry(cliente).State = EntityState.Detached;
// MessageBox.Show(mensaje, "Se han encontrado errores", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
我需要在UI层中运行注释行。您可以在UI层上处理数据层异常。你不是吗 您可以为此目的使用事件 编辑 根据您的代码,您可以抛出特殊类型(例如MyDataTierException)的异常(您希望
MessageBox
显示的异常),并用您的消息初始化它
在UI层中,您应该订阅DispatcherUnhandledException,并根据需要处理它-显示MessageBox,您可以从异常中获取文本。您可以在逻辑层中捕获异常,处理它(写入日志或任何其他内容)从异常中获取消息,并传递到ui层命令,以用户友好的方式显示消息appearance@ASpirin好啊我不知道怎么做,但这是研究的开始。谢谢,好的。现在我不知道怎么做,但这是研究的开始。谢谢