精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊 Wpf 數據綁定實例

系統 Windows
監聽事件機制,界面改變有TextChanged之類的事件,所以改變界面可以同步修改到對象。

[[381643]]

前言:

數據綁定的基本步驟:

(1)先聲明一個類及其屬性

(2)初始化類賦值

(3)在C#代碼中把控件DataContext=對象;

(4)在界面設計里,控件給要綁定的屬性{Binding 綁定類的屬性}

原理:監聽事件機制,界面改變有TextChanged之類的事件,所以改變界面可以同步修改到對象

想讓普通對象實現數據綁定,需要實現INotifyPropertyChanged接口才能監聽ProperChanged。具體代碼如下顯示:

  1. class Person:INotifyPropertyChanged 
  2.     { 
  3.         private int age; 
  4.   
  5.         public int Age 
  6.         { 
  7.             get 
  8.             { 
  9.                 return age; 
  10.             } 
  11.             set 
  12.             { 
  13.                 this.age = value; 
  14.                 if (PropertyChanged != null
  15.                 { 
  16.                    PropertyChanged(this, 
  17.                        new PropertyChangedEventArgs("Age")); 
  18.                 } 
  19.             } 
  20.         } 

BindingMode枚舉值

名稱 說明
OneWay 當源屬性變化時更新目標屬性
TwoWay 當源屬性變化時更新目標屬性,當目標屬性變化時更新源屬性
OneTime 最初根據源屬性設置目標屬性,其后的改變會忽略。
OneWayToSource 與OneWay類型相似,但方向相反。
Default 此類綁定依賴于目標屬性

UpdateSourceTrigger

名稱 說明
Default 默認值,與依賴屬性有關
Explicit 必須在顯示地調用BindingExpression.UpdateSource的情況下才更新源。
LostFocus 控件失去焦點的時候更新源值
PropertyChanged 綁定的目標值改變時更新。
 

實例運行后界面如下:

MainWindow.xaml

  1. <Window x:Class="WpfApp1.MainWindow" 
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4.         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  5.         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  6.         xmlns:local="clr-namespace:WpfApp1" 
  7.         mc:Ignorable="d" 
  8.         Title="MainWindow" Height="600" Width="800"
  9.     <StackPanel> 
  10.         <TextBlock Text="Student ID:" FontWeight="Bold" Margin="5"/> 
  11.         <TextBox Name="textBoxId" Margin="5" Text="{Binding Id,Mode=TwoWay}"/> 
  12.         <TextBlock Text="Student Name:" FontWeight="Bold" Margin="5"/> 
  13.         <TextBox Name="textBoxName" Margin="5" Text="{Binding Name,Mode=TwoWay}"/> 
  14.         <TextBlock Text="Student List:" FontWeight="Bold" Margin="5"/> 
  15.         <ListBox Name="listBox1" Height="110" Margin="5" > 
  16.             <ListBox.ItemTemplate> 
  17.                 <DataTemplate> 
  18.                     <StackPanel Orientation="Horizontal"
  19.                         <TextBlock Text="{Binding Path=Id}" Width="30"/> 
  20.                         <TextBlock Text="{Binding Path=Name}" Width="60"/> 
  21.                         <TextBlock Text="{Binding Path=Age}" Width="30"/> 
  22.                     </StackPanel> 
  23.                 </DataTemplate> 
  24.             </ListBox.ItemTemplate> 
  25.         </ListBox> 
  26.         <ListBox Name="listBox2"  Height="80" ItemsSource="{Binding Student}" DisplayMemberPath="Id" Margin="5"/> 
  27.         <Slider Name="slider1" MinHeight="25" Value="{Binding Id}"/> 
  28.         <Grid> 
  29.             <Grid.RowDefinitions> 
  30.                 <RowDefinition Height="*"></RowDefinition> 
  31.             </Grid.RowDefinitions> 
  32.             <Grid.ColumnDefinitions> 
  33.                 <ColumnDefinition Width="*"/> 
  34.                 <ColumnDefinition Width="*"/> 
  35.             </Grid.ColumnDefinitions> 
  36.             <Button Grid.Column="0" Content="Action" FontSize="40" Name="btnCtrl1" Height="80" Margin="5" Click="BtnCtrl1_Click"/> 
  37.             <Button Grid.Column="1" Content="Action" FontSize="40" Name="btnCtrl2" Height="80" Margin="5" Click="BtnCtrl2_Click"/> 
  38.         </Grid> 
  39.     </StackPanel> 
  40. </Window> 

首先解釋下C#中的Task.Delay()和Thread.Sleep()

  1. Thread.Sleep()是同步延遲,Task.Delay()是異步延遲。
  2. Thread.Sleep()會阻塞線程,Task.Delay()不會。
  3. Thread.Sleep()不能取消,Task.Delay()可以。
  4. Task.Delay()實質創建一個運行給定時間的任務,Thread.Sleep()使當前線程休眠給定時間。
  5. 反編譯Task.Delay(),基本上講它就是個包裹在任務中的定時器。
  6. Task.Delay()和Thread.Sleep()最大的區別是Task.Delay()旨在異步運行,在同步代碼中使用Task.Delay()是沒有意義的;在異步代碼中使用Thread.Sleep()是一個非常糟糕的主意。通常使用await關鍵字調用Task.Delay()。
  7. 我的理解:Task.Delay(),async/await和CancellationTokenSource組合起來使用可以實現可控制的異步延遲。

MainWindow.xaml.cs

  1. using System; 
  2. using System.Collections.ObjectModel; 
  3. using System.ComponentModel; 
  4. using System.Threading.Tasks; 
  5. using System.Windows; 
  6.  
  7. namespace WpfApp1 
  8.     /// <summary> 
  9.     /// MainWindow.xaml 的交互邏輯 
  10.     /// </summary> 
  11.     public partial class MainWindow : Window 
  12.     { 
  13.         public ObservableCollection<Student> stuList; 
  14.         public MainWindow() 
  15.         {          
  16.             InitializeComponent(); 
  17.             this.DataContext = new Student() { Name="111", Id =1 }; 
  18.             Task.Run(async() =>  //開啟異步線程task 
  19.             { 
  20.                 await Task.Delay(3000); //延時3秒 
  21.                 Dispatcher.Invoke((Action)delegate //線程中主界面顯示需要用委托,不然這次賦值,在界面不更新 
  22.                 { 
  23.                     this.DataContext = new Student() { Name = "222", Id = 2 }; 
  24.                 }); 
  25.             });           
  26.             this.DataContext = new Student() { Name = "333" , Id = 3 }; 
  27.         } 
  28.  
  29.         private void BtnCtrl1_Click(object sender, RoutedEventArgs e) 
  30.         { 
  31.             Student stu = new Student() { Id = 4, Name = "Jon", Age = 29 }; //實例化一個Student類 并給類成員賦值 
  32.             this.DataContext = stu;//將實例化得對象傳給DataContext 
  33.         } 
  34.         private void BtnCtrl2_Click(object sender, RoutedEventArgs e) 
  35.         { 
  36.             ObservableCollection<Student> stuList = new ObservableCollection<Student>() //具有通知屬性的list 
  37.             { 
  38.              new Student() { Id=5, Name="Tim", Age=29 }, 
  39.              new Student() { Id=6, Name="Tom", Age=28 }, 
  40.              }; 
  41.             this.listBox1.ItemsSource = stuList; 
  42.  
  43.             this.listBox2.ItemsSource = stuList; 
  44.             this.listBox2.DisplayMemberPath = "Name"
  45.             this.DataContext = stuList; 
  46.         } 
  47.     } 
  48.     public class Student : INotifyPropertyChanged  //創建一個繼承自INotifyPropertyChanged的類Student 
  49.     { 
  50.  
  51.         private string name
  52.  
  53.         public string Name 
  54.         { 
  55.             get { return name; } 
  56.             set 
  57.             { 
  58.                 name = value; 
  59.                 if (this.PropertyChanged != null
  60.                 { 
  61.                     PropertyChanged(this, new PropertyChangedEventArgs("Name")); //給Name綁定屬性變更通知事件 
  62.                 } 
  63.             } 
  64.         } 
  65.  
  66.         private int id; 
  67.  
  68.         public int Id 
  69.         { 
  70.             get { return id; } 
  71.             set 
  72.             { 
  73.                 id = value; 
  74.                 if (this.PropertyChanged != null
  75.                 { 
  76.                     this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Id"));//給Id綁定屬性變更通知事件 
  77.                 } 
  78.             } 
  79.         } 
  80.  
  81.         private int age; 
  82.  
  83.         public int Age 
  84.         { 
  85.             get { return age; } 
  86.             set 
  87.             { 
  88.                 age = value; 
  89.                 if (this.PropertyChanged != null
  90.                 { 
  91.                     this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Age"));//給Age綁定屬性變更通知事件 
  92.                 } 
  93.             } 
  94.         } 
  95.  
  96.         public int ID { get; internal set; } 
  97.  
  98.         public event PropertyChangedEventHandler PropertyChanged; 
  99.     } 

本文轉載自微信公眾號「CSharp編程大全」,可以通過以下二維碼關注。轉載本文請聯系CSharp編程大全公眾號。

 

責任編輯:武曉燕 來源: CSharp編程大全
相關推薦

2023-10-07 11:04:58

WPF數據UI

2009-12-23 15:16:52

WPF數據綁定

2009-12-24 11:15:59

WPF數據綁定

2009-12-28 09:50:08

WPF數據綁定

2021-08-12 18:49:41

DataStreamAPI注冊

2021-06-07 08:04:39

Restorecon命令安全

2023-09-28 11:42:15

2009-12-23 14:19:07

WPF單向綁定

2009-12-24 16:57:53

WPF密碼

2021-09-01 14:36:14

鴻蒙HarmonyOS應用

2021-09-01 10:37:25

鴻蒙HarmonyOS應用

2023-09-11 07:25:52

2020-05-06 22:07:53

UbuntuLinux操作系統

2024-11-04 15:49:43

Redis?數據遷移

2019-06-11 13:22:32

Lambda大數據架構大數據平臺

2021-02-28 22:12:11

WPF標記Handled

2021-09-06 09:52:30

壞數據假數據硬盤

2010-07-28 13:31:10

Flex數據綁定

2012-05-29 16:22:02

SpringMVC

2010-07-28 13:11:13

Flex數據綁定
點贊
收藏

51CTO技術棧公眾號

久久99久久99精品中文字幕| 91激情在线视频| 成人久久18免费网站漫画| 五月天综合在线| 精品色999| 欧美精品丝袜中出| 亚洲人精品午夜射精日韩| 岛国大片在线观看| 国内国产精品久久| 欧美怡春院一区二区三区| 5566中文字幕| 亚洲综合图色| 日韩小视频在线观看专区| www一区二区www免费| 日本电影在线观看网站| 成人黄色一级视频| 国产日韩专区在线| 国产成人自拍视频在线| 欧美激情理论| 日韩av在线网页| 91aaa精品| 激情开心成人网| 五月天国产精品| 精品无码av无码免费专区| 国产精品一区二区三区四区色 | 国产熟女高潮视频| 牛牛电影国产一区二区| 国产精品久久久久久久久图文区 | 成人免费av| 亚洲国产成人精品女人久久久 | 国产福利精品导航| 国产乱人伦真实精品视频| 国产区在线观看视频| 91精品一区二区三区综合| 国产午夜精品全部视频播放 | 亚洲精品久久久久久国产精华液| 欧美一区二区三区四区在线观看地址 | 欧美日韩精品免费在线观看视频| 成 人 免费 黄 色| 国内成人自拍视频| 成人午夜在线影院| 一级黄在线观看| 日韩av在线免费观看不卡| 韩国v欧美v日本v亚洲| 日韩女优一区二区| 国产精品久久观看| 日日骚av一区| 久久久久麻豆v国产| 精品国产1区| 亚洲视频视频在线| 国产成人无码精品久久二区三| 加勒比视频一区| 精品国产一区二区三区不卡 | 成人av综合网| 欧美一区三区四区| 精品人妻一区二区三| 成人51免费| 欧美一区二区三区男人的天堂| 91女神在线观看| japansex久久高清精品| 91精品国产免费| 午夜性福利视频| aiai久久| 日韩精品视频在线免费观看| 国产女主播喷水高潮网红在线| 亚洲深夜福利在线观看| 亚洲系列中文字幕| 美女福利视频网| 伊人久久大香线蕉综合四虎小说| 美女福利视频一区| 一区二区三区免费高清视频| 最新国产乱人伦偷精品免费网站| 性欧美长视频免费观看不卡| 久久精品久久久久久久| 青青草国产成人99久久| 成人欧美一区二区三区在线湿哒哒| 国产欧美综合视频| 成人av免费在线播放| 精选一区二区三区四区五区| 激情视频在线观看免费| 国产精品久久看| 国产精品自拍合集| 欧美二三四区| 91精品国产91久久久久久最新毛片 | 香蕉成人av| 欧美一区二区三区精品| 国产精品一区二区人妻喷水| 视频一区在线观看| 久久国产精品久久国产精品| 精品久久免费视频| 日韩va欧美va亚洲va久久| 91大片在线观看| 深夜福利视频在线观看| 国产精品第四页| 极品粉嫩国产18尤物| 欧美日韩在线精品一区二区三区激情综合 | 亚洲国产综合人成综合网站| 久久精品99国产| 国产精品18| 日韩精品中文字| 久久噜噜色综合一区二区| 激情综合电影网| 国产精品亚洲自拍| 日韩在线一区二区三区四区| 亚洲国产精品二十页| 久久这里只有精品18| 欧美舌奴丨vk视频| 欧美成人精精品一区二区频| 最近中文字幕免费视频| 欧美另类视频| 国产精品视频一区国模私拍| 污污网站免费在线观看| 日韩理论片在线| www日韩视频| 大香伊人久久精品一区二区| xxav国产精品美女主播| 国内自拍视频在线播放| 成人动漫在线一区| 99中文字幕在线观看| 本网站久久精品| 亚洲男人天堂视频| 日本少妇激情舌吻| 国产成人av电影在线观看| 亚洲精蜜桃久在线| 日韩精品三区| 亚洲嫩模很污视频| 国产成人在线免费观看视频| 成人一区在线观看| 日本黄网站色大片免费观看| 国产乱子精品一区二区在线观看| 亚洲裸体xxxx| 欧美bbbbbbbbbbbb精品| 成人一区在线观看| 国产成人艳妇aa视频在线 | 国产精品精品软件视频| 免费a级毛片在线播放| 色偷偷成人一区二区三区91| 国产精品久久久久久久无码| 欧美精品日本| 国产亚洲成年网址在线观看| 欧美一级淫片播放口| 男人天堂网在线视频| 亚洲精品高清在线观看| 佐山爱在线视频| 在线观看国产精品入口| 成人做爰www免费看视频网站| 69xxxx欧美| 欧美日韩中文字幕一区| 久久久久99精品成人| 日韩av在线发布| 亚洲人成网站在线播放2019| 精品肉辣文txt下载| 色香阁99久久精品久久久| 欧美成人一区二区视频| 国产精品视频yy9299一区| 欧美精品性生活| 天天av综合| 99影视tv| 爱情岛亚洲播放路线| 日韩精品极品在线观看播放免费视频| 亚洲婷婷综合网| 国产日韩精品视频一区| 日本中文字幕精品—区二区| 久久精品久久久| 999精品视频一区二区三区| 久草在线视频福利| 日韩电影中文字幕在线| 日韩电影在线观看一区二区| 中文一区在线播放| 小日子的在线观看免费第8集| 国内精品福利| 欧美精品欧美精品系列c| 最新日韩一区| 久久香蕉频线观| 色一情一乱一区二区三区| 日韩欧美亚洲国产一区| 国产精品成人在线视频| 国产成人99久久亚洲综合精品| 亚洲熟妇无码一区二区三区| 精品一区亚洲| 91在线观看免费| 密臀av在线播放| 中文字幕在线观看亚洲| 午夜免费福利视频| 色综合天天综合网天天看片| 日韩欧美黄色网址| 国产不卡视频一区| 日本xxxxxxx免费视频| 99精品在线观看| 精品一区久久久| 亚洲视频资源| 日本高清不卡的在线| 毛片av在线| 亚洲欧美国产高清va在线播| 91av国产精品| 欧美日韩亚洲系列| 少妇人妻丰满做爰xxx| 91亚洲精华国产精华精华液| 成人性生交免费看| 亚洲美女少妇无套啪啪呻吟| 五月天亚洲综合情| 牛牛视频精品一区二区不卡| 国产精品视频久| 九色porny自拍视频在线播放| 色av中文字幕一区| 亚洲 小说区 图片区 都市| 69堂成人精品免费视频| 91video| 一区二区欧美在线观看| 无码人中文字幕| 91蝌蚪porny| 佐佐木明希电影| 精品在线亚洲视频| 成人免费视频久久| 一本色道久久综合亚洲精品不卡 | 免费网站在线高清观看| 成人福利在线看| 四川一级毛毛片| 免费人成黄页网站在线一区二区| 欧美亚洲另类色图| 黄色日韩在线| 红桃一区二区三区| 日韩欧美精品| 日韩精品一线二线三线| 精品日产乱码久久久久久仙踪林| 91精品国产综合久久久久久丝袜 | 妖精视频在线观看免费| 99re这里只有精品6| 国偷自产av一区二区三区麻豆| 久久精品国产999大香线蕉| 人人爽人人av| 丝袜亚洲精品中文字幕一区| 男人日女人视频网站| 黄色国产精品| 欧美图片激情小说| 欧美欧美天天天天操| 蜜臀av.com| 亚洲精品网址| 在线观看18视频网站| 一区二区三区四区在线观看国产日韩| 亚洲欧美在线网| 精品久久久久久久久久久下田| 青青草原成人| 国产精品手机在线播放| 日本成人看片网址| 国产精品一线天粉嫩av| 日韩精品久久久免费观看| 丝袜久久网站| 日韩欧美一区二区三区四区五区| 精品免费视频| 深田咏美在线x99av| 日本一区二区高清不卡| 亚洲一卡二卡| 亚洲精品99| 久久在线中文字幕| 久久aⅴ国产紧身牛仔裤| 麻豆传传媒久久久爱| 日韩av一区二| 伊人五月天婷婷| 高清成人在线观看| 这里只有精品在线观看视频| 92国产精品观看| 在线国产视频一区| 亚洲欧美在线高清| 免费在线观看日韩| 激情成人在线视频| 波多野结衣人妻| 欧美二区乱c少妇| 亚洲奶汁xxxx哺乳期| 精品亚洲一区二区三区四区五区| 激情小说 在线视频| 日韩中文字幕视频在线观看| 3d玉蒲团在线观看| 91精品国产乱码久久久久久蜜臀| 成人爱爱网址| 成人免费网视频| 免费成人蒂法| 日韩欧美三级一区二区| 国产精品伦理久久久久久| www.日本三级| 日韩综合小视频| 肉色超薄丝袜脚交| 99麻豆久久久国产精品免费优播| 色一情一交一乱一区二区三区| 一色屋精品亚洲香蕉网站| 精品一区二区三区人妻| 在线精品视频免费播放| 999免费视频| 精品视频在线播放色网色视频| 欧美精品日韩少妇| 2019国产精品自在线拍国产不卡| 黄色日韩网站| 99视频免费观看| 日本不卡二三区| 精品无码国模私拍视频| 美女一区二区视频| 黄色国产在线观看| 亚洲欧美日韩电影| 无码人妻av一区二区三区波多野 | 成人在线免费视频| 欧美激情国产精品| 8av国产精品爽爽ⅴa在线观看| 国产精品国色综合久久| 99久久综合| 久久精品香蕉视频| 成人妖精视频yjsp地址| 精品一区二区三孕妇视频| 午夜不卡在线视频| 国产精品探花视频| 中文字幕日韩av电影| 岛国av免费在线观看| 亚洲最大av在线| 日产午夜精品一线二线三线| 国产精品自拍片| 国产成人精品三级麻豆| 亚洲色图27p| 欧美曰成人黄网| 久草在线网址| 91国在线精品国内播放| 日韩有吗在线观看| 五月天在线免费视频| 蜜桃免费网站一区二区三区| 女尊高h男高潮呻吟| 亚洲高清久久久| www.天天干.com| 久久五月情影视| 性欧美video另类hd尤物| 亚洲成人在线视频网站| 免费日韩视频| 加勒比一区二区| 狠狠久久五月精品中文字幕| 日本精品999| 欧美激情一级精品国产| 一区二区网站| 国产精品久久久久久久久电影网| 国产在线精品不卡| 精品人妻伦九区久久aaa片| 欧美日韩免费观看一区三区| 国产一级免费在线观看| 国产精品mp4| jvid福利在线一区二区| 亚洲 激情 在线| 国产精品久久久久久久久快鸭| 中国精品一区二区| 最好看的2019年中文视频 | 久久性天堂网| 久久亚洲AV成人无码国产野外 | 国产模特av私拍大尺度| 久久精品视频在线播放| 国产美女亚洲精品7777| 蜜桃网站在线观看| 成人午夜大片免费观看| 在线观看精品国产| 精品亚洲男同gayvideo网站| 欧美电影h版| 一区二区在线中文字幕电影视频 | 欧美色倩网站大全免费| 亚洲s色大片| 91香蕉视频在线下载| 国产综合婷婷| 黄色aaa视频| 欧美精品 国产精品| 影音先锋中文在线视频| 91理论电影在线观看| 午夜精品福利在线视频| 欧美xingq一区二区| 国产精品一区二区日韩| 欧美极品一区| 麻豆91小视频| 国产一级视频在线播放| 亚洲女人天堂av| 亚洲高清国产拍精品26u| www.在线观看av| 久久久www成人免费无遮挡大片| 中文字幕一区二区久久人妻| 久久中文字幕一区| 久本草在线中文字幕亚洲| 无码内射中文字幕岛国片| 亚洲另类一区二区| 日韩电影在线观看完整版| 91精品久久久久久综合乱菊| 影音先锋久久精品| 能直接看的av| 精品黑人一区二区三区久久| 成人爽a毛片免费啪啪| 强伦女教师2:伦理在线观看| aaa亚洲精品| 一二三区中文字幕| 久久久久久亚洲精品| blacked蜜桃精品一区| 动漫美女无遮挡免费| 欧美在线小视频| 丰满大乳少妇在线观看网站| 深田咏美在线x99av| 成人国产精品免费观看动漫| 高潮无码精品色欲av午夜福利| 国精产品一区一区三区有限在线| 欧美色爱综合| 特级西西人体wwwww| 91精品国产高清一区二区三区蜜臀|