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