WPF应用程序启动非常缓慢

时间:2014-07-14 09:01:36

标签: wpf xaml

我有这个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>

1 个答案:

答案 0 :(得分:2)

我有一个GetEntities方法,添加一个IsInDesignMode检查似乎解决了我的问题:

protected override ObservableCollection<Student> GetEntities()
        {
            if (IsInDesignMode)
            {
                return null;
            }
            else
            {

                _entities = new ObservableCollection<Student>(_context.Set<Student>());
                return _entities;

            }
        }