【问题标题】:WPF application starts very slowlyWPF 应用程序启动非常缓慢
【发布时间】: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,您的视图模型需要很长时间才能创建自己。该视图模型的构造函数中发生了什么?

标签: wpf xaml


【解决方案1】:

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

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

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

            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 2012-04-18
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多