在WPF中,通过XAML设置DataContext。

24 浏览
0 Comments

在WPF中,通过XAML设置DataContext。

我有以下代码:

MainWindow.xaml


           
        
            
            
        
        
            
            
        
        

Employee.cs

namespace SampleApplication
{
    public class Employee
    {
        public Employee()
        {
            EmployeeDetails employeeDetails = new EmployeeDetails();
            employeeDetails.EmpID = 123;
            employeeDetails.EmpName = "ABC";
        }
    }
    public class EmployeeDetails
    {
        private int empID;
        public int EmpID
        {
            get
            {
                return empID;
            }
            set
            {
                empID = value;
            }
        }
        private string empName;
        public string EmpName
        {
            get
            {
                return empName;
            }
            set
            {
                empName = value;
            }
        }
    }
}

这是非常简单的代码,我只想将Employee.cs类中的EmpID和EmpName属性绑定到MainWindow.xaml中的文本框的Text属性,但是当我运行代码时,这些文本框中没有显示任何内容。绑定是否正确?

0
0 Comments

问题的原因是代码中的DataContext设置不正确。通过设置DataContext为Employee类的实例来解决问题。

然而,这可能并不是实际想要的解决方法。更好的解决方法是创建一个新的MainViewModel类,该类具有一个Employee属性,并将其绑定到DataContext。这样可以添加其他属性和类型。

需要注意的是,DataContext只在窗口类的构造函数中的InitializeComponent()方法调用之后设置。

0
0 Comments

在WPF中,当我们希望在XAML中设置DataContext时,可能会遇到一些问题。这篇文章将介绍问题出现的原因以及解决方法。

首先,我们需要在Employee类中创建一个带有员工详细信息的属性:

public class Employee
{
    public Employee()
    {
        EmployeeDetails = new EmployeeDetails();
        EmployeeDetails.EmpID = 123;
        EmployeeDetails.EmpName = "ABC";
    }
    public EmployeeDetails EmployeeDetails { get; set; }
}

如果不这样做,我们就会在Employee的构造函数中创建一个对象的实例,并且丢失了对它的引用。

在XAML中,我们需要创建Employee类的实例,然后将其赋值给DataContext。

XAML应该如下所示:


    
        
    
    
        
            
            
        
        
            
            
        
        

现在,在创建了带有员工详细信息的属性后,我们可以使用这个属性进行绑定:

Text="{Binding EmployeeDetails.EmpID}"

通过以上的整理,我们可以了解到在WPF中设置DataContext时出现问题的原因以及解决方法。

0
0 Comments

问题的出现原因是因为在XAML中设置DataContext时出现了几个问题。首先,因为DataContext是一个复杂对象,不能作为字符串进行赋值,所以不能使用DataContext="{Binding Employee}"这样的语法,而是要使用的语法。其次,你给视图分配的是代表数据上下文对象的类,而不是单个属性,所以{Binding Employee}在这里是无效的,你只需要指定一个对象即可。然后,当你使用如下有效的语法来分配数据上下文时,要知道你正在创建一个Employee类的新实例,并将其分配为数据上下文对象。你的默认构造函数可能什么都没有显示,所以什么都不会显示出来。但是在代码后台文件中如何管理它呢?你需要对DataContext进行类型转换。最后,还有一种方法是在代码后台文件中分配数据上下文。这样的好处是你的代码后台文件已经知道它并可以与之一起工作。解决这个问题的方法是将'InitializeComponent();'放在构造函数的最后一行。

0