在主窗口下运行项目花费的时间太长.xaml是开放的WPF
本文关键字:xaml WPF 时间 窗口 运行 项目 | 更新日期: 2023-09-27 18:11:37
我已经用实体框架和WPF启动了一个MVVM应用程序。在主窗口。我这样写:
<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>
项目工作正常。但有一个问题。当主窗口。xaml在Visual Studio上打开时,程序开始运行很慢。我还得到以下错误:
Error 1与网络相关或特定于实例的错误建立到SQL Server的连接。未找到服务器或无法访问。验证实例名是否正确SQL Server已配置为允许远程连接。(供应商:SQL网络接口,错误:26 -定位服务器/实例错误指定)C: . . MVVMAttempt ' MVVMAttempt.App ' App。xaml 3 9 mvvmattry。应用
我该如何解决这个问题?谢谢。
原因:设计者正在尝试初始化静态资源,特别是您的ViewModel
以满足绑定。然后从Entity Framework上下文初始化中得到一个异常。
如何修复:在你的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方法?