【发布时间】:2014-07-14 18:03:12
【问题描述】:
我有这个 WPF 应用程序。每当我打开 MainWindow.xaml 时,xaml 文件打开速度非常慢,或者当我在 MainWindow.xaml 打开时运行解决方案时,解决方案运行速度非常慢。我怎样才能解决这个问题?这是我的 MainWindow.xaml:
<Window x:Class="CodeFirstMVVM.App.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cm="clr-namespace:System.ComponentModel;assembly=System"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:CodeFirstMVVM.App.ViewModels"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
mc:Ignorable="d"
DataContext="{Binding Source={StaticResource Locator}, Path=OgrenciView}"
Title="MainWindow" Height="500" Width="900">
<Grid>
<Canvas>
<Button Content="Yeni" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="75" Command="{Binding EkleCommand}"/>
<Button Content="Güncelle" HorizontalAlignment="Left" Margin="109,10,0,0" VerticalAlignment="Top" Width="75" Command="{Binding DuzenleCommand}"/>
<Button Content="Sil" HorizontalAlignment="Left" Margin="207,10,0,0" VerticalAlignment="Top" Width="75" Command="{Binding SilCommand}"/>
<Button Content="Kaydet" HorizontalAlignment="Left" Margin="777,15,0,0" VerticalAlignment="Top" Width="75" Command="{Binding KaydetCommand}"/>
<Label Content="AdSoyad" Canvas.Left="25" Canvas.Top="51"/>
<Label Content="OkulNo" Canvas.Left="25" Canvas.Top="82"/>
<Label Content="Sınıf" Canvas.Left="25" Canvas.Top="113" RenderTransformOrigin="0.053,-0.231"/>
<Label Content="Yaş" Canvas.Left="25" Canvas.Top="144" RenderTransformOrigin="-0.053,-0.077"/>
<TextBox Height="23" Canvas.Left="131" TextWrapping="Wrap" Canvas.Top="51" Width="283" Name="txtAdSoyad" Text="{Binding AdSoyadUI}"/>
<TextBox Height="23" Canvas.Left="131" TextWrapping="Wrap" Canvas.Top="86" Width="283" Name="txtOkulNo" Text="{Binding OkulNoUI}"/>
<TextBox Height="23" Canvas.Left="131" TextWrapping="Wrap" Canvas.Top="117" Width="283" Name="txtSinif" Text="{Binding SinifUI}"/>
<TextBox Height="23" Canvas.Left="131" TextWrapping="Wrap" Canvas.Top="148" Width="283" Name="txtYas" Text ="{Binding YasUI}"/>
<DataGrid x:Name="dg01" ItemsSource="{Binding Entities, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedEntity}" CanUserAddRows="False" Canvas.Left="25" Canvas.Top="201" AutoGenerateColumns="False" IsReadOnly="True" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding AdSoyad}" Header="AdSoyad" Width="200" />
<DataGridTextColumn Binding="{Binding OkulNo}" Header="OkulNo" Width="50" />
<DataGridTextColumn Binding="{Binding Sinif}" Header="Sınıf" Width="50" />
<DataGridTextColumn Binding="{Binding Yas}" Header="Yaş" Width="50" />
</DataGrid.Columns>
</DataGrid>
<DataGrid ItemsSource="{Binding SelectedEntity.Notlar}" Canvas.Left="629" Canvas.Top="201" AutoGenerateColumns="False" >
<!-- <DataGrid ItemsSource="{Binding SelectedEntity.Notlar}" Canvas.Left="622" Canvas.Top="201" AutoGenerateColumns="False" >-->
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding NotDeger}" Header="Notlar"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Canvas>
</Grid>
</Window>
这是我的 App.xaml:
<Application x:Class="CodeFirstMVVM.App.App"
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"
StartupUri="MainWindow.xaml"
mc:Ignorable="d">
<Application.Resources>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:CodeFirstMVVM.ViewModels" />
</Application.Resources>
</Application>
【问题讨论】:
-
这就是 mainwindow.xaml 中的全部内容吗?是空白页吗?
-
@NickUdell 你打败了我
-
对于初学者,请尝试在 Visual Studio 中运行分析器,看看是否能找到任何瓶颈。但是您提供的代码示例不足以让我们提供帮助!
-
@NickUdell 我已经添加了主窗口的完整代码。
-
三个明显的选择: 1,你有很多绑定异常被抛出。在执行期间检查您的输出日志。 2,您的数据网格需要一段时间来加载您的数据集。数据集有多大? 3,您的视图模型需要很长时间才能创建自己。该视图模型的构造函数中发生了什么?