0

我是 C# 的初学者,我正在学习本教程

该教程使用 Visual Studio 2019 社区版和 SQL Server Management Studio。

我没有像教程中那样使用 SQL Server 2008 Express 版本,而是使用 SQL Server 2017 Express。

因此,我的解决方案包含 6 个项目(一个 WPF 和 5 个类库 - 它们都使用 .Net Framework)。

我已经设置EmployeeFrontEndApp为启动项目。

这是我的 MainWindow.xaml 中的代码:

<Window x:Class="EmployeeFrontEndApp.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"
        xmlns:local="clr-namespace:EmployeeFrontEndApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <local:EmployeeDetails />
    </Grid>
</Window>

这是我的 EmployeeDetails.xaml 中的代码:

<UserControl x:Class="EmployeeFrontEndApp.EmployeeDetails"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:EmployeeFrontEndApp"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">

    <UserControl.DataContext>
        <local:EmployeeDetailsVM />
    </UserControl.DataContext>

    <UserControl.Resources>
        <ResourceDictionary>
            <Style x:Key="Header1" TargetType="Label">
                <Setter Property="FontSize" Value="15" />
                <Setter Property="FontWeight" Value="Bold" />
            </Style>
        </ResourceDictionary>
    </UserControl.Resources>
    
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="200" />
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Label Grid.Row="0" Grid.ColumnSpan="2" HorizontalContentAlignment="Center" Style="{StaticResource Header1}">Employee Details</Label>
        <Label Grid.Row="1"></Label>
        <Label Grid.Row="2">Employee ID:</Label>
        <TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,5" Text="{Binding Employee.Employee_ID}" />
        <Label Grid.Row="3">Employee Name:</Label>
        <TextBox Grid.Row="3" Grid.Column="1" Margin="0,0,0,5" Text="{Binding Employee.Employee_Name}" />
        <Label Grid.Row="4">Age:</Label>
        <TextBox Grid.Row="4" Grid.Column="1" Margin="0,0,0,5" Text="{Binding Employee.Age}" />
        <Label Grid.Row="5">Address:</Label>
        <TextBox Grid.Row="5" Grid.Column="1" Margin="0,0,0,5" Text="{Binding Employee.Address}" />
        <Label Grid.Row="6">Date of Joining:</Label>
        <TextBox Grid.Row="6" Grid.Column="1" Margin="0,0,0,5" Text="{Binding Employee.Date_Joining, StringFormat='dd-MM-yyy'}" />
        <Label Grid.Row="7">Date of Joining:</Label>
        <TextBox Grid.Row="7" Grid.Column="1" Margin="0,0,0,5" Text="{Binding Employee.Date_Leaving, StringFormat='dd-MM-yyy'}" />
    </Grid>
</UserControl>

我在这个项目中还有一个 EmployeeDetailsVM.cs 文件:

using System.Linq;
using EmployeeBL;

namespace EmployeeFrontEndApp
{
    public class EmployeeDetailsVM : ObservableObject
    {
        private EmployeeUI.Employee _employee;

        public EmployeeUI.Employee Employee
        {
            get => _employee;
            set
            {
                _employee = value;
                OnPropertyChanged("Employee");
            }
        }

        public EmployeeDetailsVM()
        {
            IEmployeeBL EmployeeBL = new EmployeeBL.EmployeeBL(new EmployeeDAL.EmployeeDAL());
            Employee = EmployeeBL.GetAllEmployees().FirstOrDefault();
        }
    }
}

我真的不知道在这里发布什么其他代码,因为我不想发布整个项目。

每次我运行我的项目时,我都会得到这个:

在此处输入图像描述

但在教程中,应用程序看起来像这样

在此处输入图像描述

我知道数据库连接正在工作,因为在我的 EmployeeDetails.xaml 文件(来自EmployeeFrontEndApp)中,它向我显示了数据库中的数据:

在此处输入图像描述

因为我是 C# 和 Visual Studio 的初学者,所以请您回答这个问题:什么会阻止我的应用程序正确显示,我应该在我的代码中的哪个位置为您提供有关此问题的更清晰的详细信息?

编辑:今天我发现这篇文章为什么我的 xaml 只显示一个普通窗口,其中没有任何内容 ,我将 App.xaml 文件的这行代码StartupUri="MainWindow.xaml"更改为此StartupUri="EmployeeDetails.xaml"

现在出现了: 5

我不确定这是正确的解决方案,因为在此图像中“主窗口”文本丢失并且我的 MainWindow.xaml 文件变得完全无用。如何保持应用程序正常工作并继续使用 MainWindow?

4

1 回答 1

0

检查是否将 EmployeeDetails.xaml 控件添加到 MainWindow.xaml 窗口。这不太可能是数据库问题。更有可能您的控件一开始就没有被添加到窗口中。

于 2020-09-02T16:32:35.390 回答