繁体   English   中英

打开MainWindow.xaml时正在运行的项目花费的时间太长-WPF

[英]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 BlendVisual 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM