c语言编程笔录

首页 >   > 笔记大全

笔记大全

WPF核心的技术 数据绑定

更新时间:2023-07-13

第一段:什么是WPF数据绑定

WPF数据绑定是指将数据源和目标UI元素之间建立连接,实现数据的自动转换和更新,使应用程序的UI与数据模型达到同步的目的。简单说就是将数据与WPF UI元素的属性进行绑定,以便数据的变化自动反映在UI元素上,而无需手动更新UI。

//一个简单的数据绑定示例
<Window x:Class="WPFDataBinding.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="450" Width="800">
    <Grid>
        <TextBlock Text="{Binding Path=Name}" />
    </Grid>
</Window>

第二段:WPF数据绑定的类型

WPF数据绑定有三种类型:一、一次性绑定,数据源变化后UI不会更新。二、单向绑定,数据源变化后UI更新。三、双向绑定,UI和数据源相互关联,其中UI的变化会更新数据源。

//单向绑定示例
<TextBlock Text="{Binding Path=Name}" />
//双向绑定示例
<TextBox Text="{Binding Path=Name, Mode=TwoWay}" />

第三段:WPF数据绑定的用法

WPF数据绑定的用法分为两种:一、基本绑定,将数据源绑定到UI元素的属性上。二、高级绑定,可以自定义数据转换器、绑定多个数据源和更改绑定行为。

//基本绑定示例
//在C#代码中声明
public class Person
{
   public string Name { get; set; }
}
//在XAML中绑定
<Window x:Class="WPFDataBinding.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="450" Width="800">
    <Grid>
        <TextBlock Text="{Binding Path=Name}" />
    </Grid>
</Window>

//高级绑定示例
//自定义数据转换器
public class DoubleToIntConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        double input = (double)value;
        return (int)input;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int input = (int)value;
        return (double)input;
    }
}

//在XAML中绑定
<Window x:Class="WPFDataBinding.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Slider Value="{Binding Age, Mode=TwoWay, Converter={StaticResource DoubleToIntConverter}}"/>
    </Grid>
</Window>

第四段:WPF数据绑定与MVVM模式

MVVM是一种设计模式,它将应用程序的UI与业务逻辑相分离,以便更好地管理和测试代码。 WPF数据绑定与MVVM效果非常好,使得我们可以轻松实现MVVM模式。数据绑定的实现和分离数据模型和UI逻辑的思想都是MVVM模式的核心。

//MVVM示例
//在C#代码中声明
public class PersonViewModel
{
    public Person Model { get; set; }

    public string Name 
    {
        get { return Model.Name; }
        set { Model.Name = value; }
    }

    public PersonViewModel()
    {
        Model = new Person();
    }
}

//在XAML中绑定
<Window x:Class="WPFDataBinding.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="450" Width="800">
    <Window.DataContext>
        <local: PersonViewModel />
    </Window.DataContext>
    <Grid>
        <TextBox Text="{Binding Name, Mode=TwoWay}" />
    </Grid>
</Window>