WPF DataContext

后台代码:

    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }

    }

 

前台代码:

<Window x:Class="BindingTest.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:BindingTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="135" Width="300">
    <StackPanel Background="LightBlue">
        <StackPanel.DataContext>
            <local:Student Id="6" Age="29" Name="Tim"/>
        </StackPanel.DataContext>
        <Grid>
            <StackPanel Name="sp1">
                <TextBox Text="{Binding Id}" Margin="5"/>
                <TextBox Text="{Binding Name}" Margin="5"/>
                <TextBox Text="{Binding Age}" Margin="5"/>
            </StackPanel>
        </Grid>
    </StackPanel>
</Window>

运行结果:

 

结果中的name并没有取父元素的Name(sp1)

注:

在WPF中,DataContext是一个很重要的概念,它是数据驱动UI的核心。DataContext可以设置在任何WPF元素上,并且会被该元素的子元素继承。如果你没有为某个元素显式设置DataContext,那么它会向上查找最近的父元素设置的DataContext。

如果连最近的父元素都没有设置DataContext,那么DataContext默认为null。

posted @ 2024-07-05 11:30  竹楼风雨声  阅读(8)  评论(0编辑  收藏  举报