[英]Running project takes too long when MainWindow.xaml is open - WPF
我已经使用Entity Framework和WPF启动了MVVM应用程序。 在MainWindow.xaml中,我这样写:
<Window x:Class="MVVMAttempt.App.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="400" Width="525"
DataContext="{StaticResource StudentVM}">
在App.xaml中,我这样写:
<Application.Resources>
<vms:StudentVM x:Key="StudentVM" xmlns:vms="clr-namespace:MVVMAttempt.App.ViewModels"/>
</Application.Resources>
该项目正常工作。 但是有一个问题。 在Visual Studio上打开MainWindow.xaml时,该程序开始真正运行缓慢。 我也收到以下错误:
错误1建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供程序:SQL网络接口,错误:26-错误指定服务器/实例的位置)C:.. MVVMAttempt \\ MVVMAttempt.App \\ App.xaml 3 9 MVVMAttempt.App
我怎样才能解决这个问题? 谢谢。
原因:设计器正在尝试初始化静态资源,尤其是初始化ViewModel
以满足绑定。 然后,您从实体框架上下文初始化中获得异常。
解决方法:在ViewModel
使用System.ComponentModel.DesignerProperties.IsInDesignTool
区分实际情况和设计时初始化。
if (System.ComponentModel.DesignerProperties.IsInDesignTool)
{
// Initialize "fake" context here
}
else
{
// EF context initialization
}
乍一看,这似乎是一个开销,但是如果您正在使用Expression Blend和Visual Studio Designer ,则提供一些虚拟数据确实很有用,只是了解您的控件在现实世界中的“外观”。
xaml
设置设计时DataContext
,这将起到相同的作用:
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
d:DataContext="{<Fake/design-time data context binding>}"
根据错误消息,存在有关访问数据库的问题。 确认您的连接正常。 您使用哪种EF方法?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.