簡體   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