首页 > 其他分享 >WPF绑定(Binding)(4)

WPF绑定(Binding)(4)

时间:2023-09-08 17:36:26浏览次数:35  
标签:Name 绑定 Binding name MainViewModel WPF public string

数据绑定

组件之间的绑定

<StackPanel>
            <Slider x:Name="sd" Width="200" />
            <TextBox Text="{Binding ElementName=sd, Path=Value}" />
        </StackPanel>

 

绑定数据源

<Window.Resources>
        <TextBox x:Key="txt">Hello</TextBox>
    </Window.Resources>
    <Grid>
        <StackPanel>

            <TextBox FontSize="30" Text="{Binding Source={StaticResource txt}, Path=Text}" />
        </StackPanel>
    </Grid>

 

绑定数据上下文

<TextBox
                x:Name="txt"
                FontSize="30"
                Text="{Binding Name, FallbackValue='Not Found'}" />

 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new Person() { Name = "abc" };
        }


    }

    public class Person
    {
        public string Name { get; set; }
    }

 

当前窗口的数据上下文

//新建文件MainViewModel
public class MainViewModel { public MainViewModel() { Name = "Hello"; } public string Name { get; set; } }
public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new MainViewModel();
        }

实现双向绑定

public class MainViewModel : INotifyPropertyChanged
    {
        public MainViewModel()
        {
            Name = "Hello";
            Task.Run(async () => { 
                await Task.Delay(3000);
                Name = "No";
            });
        }

        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; OnPropertyChanged("Name"); }
        }
        public event PropertyChangedEventHandler? PropertyChanged;

        protected void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }

mvvmlight

 

public class MainViewModel : ViewModelBase
    {
        public MainViewModel()
        {
            Name = "Hello";
            Task.Run(async () => { 
                await Task.Delay(3000);
                Name = "No";
            });
        }

        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; RaisePropertyChanged(); }
        }
       
    }

 

绑定事件

public class MainViewModel : ViewModelBase
    {
        public MainViewModel()
        {
            Name = "Hello";
            SaveCommand = new RelayCommand(() =>
            {
                Name = "No";
            });
        }

        public RelayCommand SaveCommand { get; private set; }

        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; RaisePropertyChanged(); }
        }
       
    }
<Button
                Width="100"
                Height="40"
                Command="{Binding SaveCommand}"
                Content="click" />

 

 

 

标签:Name,绑定,Binding,name,MainViewModel,WPF,public,string
From: https://www.cnblogs.com/baisedeyu/p/17688089.html

相关文章

  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(1)
    在我们的SqlSugar的开发框架中,整合了Winform端、Vue3+ElementPlus的前端、以及基于UniApp+Vue+ThorUI的移动前端几个前端处理,基本上覆盖了我们日常的应用模式了,本篇随笔进一步介绍前端应用的领域,研究集成WPF的应用端,循序渐进介绍基于CommunityToolkit.Mvvm和HandyControl的WPF应......
  • WPF开发中的资源引用
    文章主要内容:项目资源管理常用资源引用控件模板动态资源变更项目资源管理资源直接直接引用在项目中直接添加一张图片,并将属性的生成操作改为"资源",在XAML中直接引用文件路径源站点资源引用将图片属性的生成操作改为"无",复制到输出目录改为"始终复制"。重新编译后会在源......
  • linux里如何将一个文件和一个套接字绑定?
    要将一个文件和套接字绑定,你可以使用Linux中的命名管道(NamedPipe)来实现。命名管道是一种特殊类型的文件,可以用来在进程之间进行通信。你可以将命名管道作为一个文件来进行操作,同时将其连接到套接字以进行网络通信。以下是将文件内容输入到套接字的简单示例:创建一个命名管道:mkfifo......
  • 【愚公系列】2023年09月 WPF控件专题 ProgressBar控件详解
    (文章目录)前言WPF控件是WindowsPresentationFoundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见......
  • WPF 消除border边框颜色与背景色之间细线
    在WPF中,当boder的边框色与boder的背景为同一个色时,在整个border下方会有一条细线,如下图:<Borderx:Name="bdMain"Background="{DynamicResourceQueryCouponsBackground}"BorderThickness="1,1,1,3"CornerRadius="8"></Border&g......
  • WPF inkcavas 保存笔迹部分
    this.inkCanv.Strokes.Save(file);Andthat'senoughtosavealltheinformationneededtorestoretheInkatalatertimeSaveInkasabitmapSavingtheInkasaBitmapisalittletrickier,butnotimpossible.Wesimplyuse3niceobjectsRenderTarg......
  • 【愚公系列】2023年09月 WPF控件专题 Slider控件详解
    (文章目录)前言WPF控件是WindowsPresentationFoundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见......
  • [WPF]使用HLSL实现百叶窗动效
    百叶窗动画是制作PPT时常用的动画之一,本文将通过实现百叶窗动画效果的例子介绍在WPF中如何使用ShaderEffect。ShaderEffect是使用高级着色器语言(HighLevelShadingLanguage,HLSL)事先制作好并且已经编译过的效果。先看下百叶窗动画实现效果:准备工作与实现编写和编译HLSL代码,创......
  • 视频集中存储/云存储/磁盘阵列EasyCVR平台分组批量绑定/取消设备功能详解
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台视频能力丰富灵活,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备传统安防视频监控的能力,也具备接入AI智能分......
  • C#+WPF上位机开发课程(模块化与反应式编程)
    点击下载:C#+WPF上位机开发课程(模块化与反应式编程)提取码:ak72上位机是指可以直接发出操控命令的计算机,一般是PC,通常用于屏幕上显示各种信号变化(液压,水位,温度等),并将这些数据存储下来,供分析。 下位机是直接控制设备,获取设备状况的计算机,一般是PLC(ProgrammableLogicController)/单......