43.Textbox的数据绑定 C#例子 WPF例子
固定最简步骤,包括
XAML:
题头里引入命名空间
标题下面引入类
box和block绑定属性
C#:
通知的类,及对应固定的任务
引入字段
引入属性
属性双触发,其中一个更新block的属性
block=>指向box的属性
从Textbox这行看
<TextBox Text="{Binding InputText, UpdateSourceTrigger=LostFocus, Mode=TwoWay}"
Width="300" Height="30" Margin="0,0,0,10"/>
binding是绑定的意思,后面的inputtext是类里的一个属性
意思就是它的文本和这个属性绑定了
updatesourcetrigger是一个触发,后面等号后的内容是不同的选项,这里选择的触发方式是失焦
这样其实反而像事件了
mode是twoway双向的意思,改属性能反映到控件,改控件能反映到属性
<TextBlock Text="{Binding DisplayText}"
Width="300" Height="30"
TextWrapping="Wrap"
VerticalAlignment="Center"/>
这里的话就是只进行了文本与属性绑定,没有触发方式。
然后这是一个最简的使用TextBox绑定,然后用TextBlock显示的例子
MainWindowViewModel.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.CompilerServices;
namespace Main_Window_ViewModel
{
class MainWindowViewModel: INotifyPropertyChanged
{
private string textBox1Text;
public string TextBox1Text
{
get { return textBox1Text; }
set
{
textBox1Text = value;
OnPropertyChanged(textBox1TextDisplay);
OnPropertyChanged();
}
}
private string textBox1TextDisplay;
public string TextBox1TextDisplay => TextBox1Text;
//固定的
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
XMAL
<Window x:Class="绑定类型一_box和blick.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:Main_Window_ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
<Grid>
<TextBox HorizontalAlignment="Left" Margin="400,145,0,0" TextWrapping="Wrap" Text="{Binding TextBox1Text}" VerticalAlignment="Top" Width="120"/>
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding TextBox1TextDisplay}" VerticalAlignment="Top" Margin="400,183,0,0"/>
<TextBox HorizontalAlignment="Left" Margin="400,108,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
</Grid>
</Window>
失焦时下面就会显示