43.Textbox的数据绑定 C#例子 WPF例子

固定最简步骤,包括

XAML:

题头里引入命名空间

标题下面引入类

box和block绑定属性

C#:

通知的类,及对应固定的任务

引入字段

引入属性

属性双触发,其中一个更新block的属性

block=>指向box的属性

从Textbox这行看

cs 复制代码
            <TextBox Text="{Binding InputText, UpdateSourceTrigger=LostFocus, Mode=TwoWay}" 
                     Width="300" Height="30" Margin="0,0,0,10"/>

binding是绑定的意思,后面的inputtext是类里的一个属性

意思就是它的文本和这个属性绑定了

updatesourcetrigger是一个触发,后面等号后的内容是不同的选项,这里选择的触发方式是失焦

这样其实反而像事件了

mode是twoway双向的意思,改属性能反映到控件,改控件能反映到属性

cs 复制代码
            <TextBlock Text="{Binding DisplayText}" 
                       Width="300" Height="30" 
                       TextWrapping="Wrap" 
                       VerticalAlignment="Center"/>

这里的话就是只进行了文本与属性绑定,没有触发方式。

然后这是一个最简的使用TextBox绑定,然后用TextBlock显示的例子

MainWindowViewModel.cs

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

cs 复制代码
<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>

失焦时下面就会显示

相关推荐
小池先生1 分钟前
Gradle vs Maven 详细对比
java·maven
烛阴6 分钟前
隐式vs显式:解密C#类型转换的底层逻辑
前端·c#
q***23926 分钟前
基于SpringBoot和PostGIS的云南与缅甸的千里边境线实战
java·spring boot·spring
q***787817 分钟前
Spring Boot的项目结构
java·spring boot·后端
梦里不知身是客1142 分钟前
kafka作为Sink
c#·linq
q***965843 分钟前
Spring Data JDBC 详解
java·数据库·spring
猿来是你_L43 分钟前
C# Dictionary 转换成 List
windows·c#·list
Kuo-Teng1 小时前
LeetCode 118: Pascal‘s Triangle
java·算法·leetcode·职场和发展·动态规划
倚肆1 小时前
HttpServletResponse 与 ResponseEntity 详解
java·后端·spring
悟能不能悟1 小时前
java List怎么转换为Vector
java·windows·list