亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

WPF綁定實例詳解

2020-01-24 02:25:44
字體:
來源:轉載
供稿:網友

本文詳細講述了WPF綁定的用法,分享給大家供大家參考。具體用法分析如下:

1.WPF綁定使用的源屬性必須是依賴項屬性,這是因為依賴項屬性具有內置的更改通知支持,元素綁定表達式使用了Xaml擴展標記,WPF綁定一個控件是使用Binding.ElementName,綁定非控件對象時使用Source,RelativeSource,DataContext屬性(WPF特有,而非XAML),只能綁定對象的共有字段.
下邊是部分Binding 屬性名,完整列表參考 :http://msdn.microsoft.com/zh-cn/library/vstudio/ms750413.aspx

① Source:數據提供者
② RelativeSource:根據當前對象為基礎,自動查找源并綁定
③ DataContext:如果未使用Source和RelativeSource,WPF就從當前控件開始在控件樹種向上查找,并使用第一個非空的DataContext屬性,可以在更高層次容器對象上設置DataContext,如下代碼 Text 綁定到 Source屬性,但未設置Text的綁定對象,會向上查找DataContext綁定的對象的Source屬性
④ 示例代碼:

<StackPanel DataContext="{X:Static SystemFonts.IconFontFamily}">     <TextBox Margin="5" Text="{Binding Path=Source}">    </TextBox> </StackPanel><TextBlock Margin="3" Name="lblSampleText" FontSize="{Binding ElementName=sliderFontSize,Path=Value Mode="TwoWay"}"Text="{Binding ElementName=txtContent,Path=Text}" Foreground="{Binding ElementName=lstColors,Path=SelectedItem.Tag}" ></TextBlock>

也可是使用代碼創建綁定:

Binding binding = new Binding(); binding.Source = sliderFonSize;   binging.path=new PropertPath("Value")  binding.Mode=BindignMode.TwoWay; txt.SetBinding(TextBlock.FontSize,binding)

2.BindingMode的枚舉值有:

① OneWay
② TwoWay
③ OneTime:根據源端屬性值設置目標屬性值,之后的改變會被忽略,除非調用BindingExpression.UpdateTarge方法
④ OneWayToSource:與OneWay類似,但方向相反,用于目標屬性是非依賴項屬性的情況
⑤ Default:默認值,根據目標屬性確定綁定類型.依賴項屬性都由一個元數據 FrameworkPropertyMetadata.BindsTwoWayByDefault用于標識oneway綁定還是twoway綁定

3.從目標到綁定源端數據更新時(binding mode為twoway或者onewaytosource),更新行為(什么時機更新)由Binding.UpdateSourceTrigger枚舉屬性控制,UpdateSourceTrigger的值有:

① PropertyChanged:目標屬性發生變化時立即更新

② LostFocus:目標屬性發生變化并且目標丟失焦點時更新源

③ Explicit:除非調用BindingExpression.UpdateSource()方法,否則無法更新

④ Default:根據目標屬性的元數據(FrameworkPropertMetadata.DefaulUpdateSourceTrigger)確定更新行為,大多數屬性默認行為是PropertyChanged

4.MultiBinding:將多個對象綁定到一個控件,主要要使用StringFormat

<ListBox ItemsSource="{StaticResource MyData}"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock><TextBlock.Text> <MultiBinding StringFormat="{}{0} -- Now only {1:C}!"><Binding Path="Description"/> <Binding Path="Price"/> </MultiBinding> </TextBlock.Text> </TextBlock> </DataTemplate></ListBox.ItemTemplate> </ListBox>

5.ObjectDataProvider:從另一個類中獲取信息,只用于數據查詢,IsAsynchronous=true,可以使ObjectDataProvider在后臺執行,這樣即使發生異常不會影響綁定控件的顯示:

<ObjectDataProvider x:Key="productsProvider" ObjectType="{x:Type local:StoreDB}"MethodName="GetProducts"></ObjectDataProvider>

6.WPF中派生自ItemsControl的類都能顯示列表,能夠支持集合數據綁定的元素包括ListBox,ComboBox,ListView和DataGrid,Menu,Treeview,ItemsControl中有三個重要屬性:

① ItemsSource: 指向一個集合,結合必須支持IEnumerable接口,該集合包含將在列表中顯示的所有元素,但基本的IEnumerable接口只支持只讀綁定,要使修改能直接反應到綁定的控件上需要使用ObservablCollection類
② DisplayMemberPath:確定用于顯示的 對象的屬性,如果未設置 則會顯示對象的ToString()方法返回的值
③ ItemTemplates:接受一個數據模板,用于為每個項創建可視化外觀

7.繼承自IEnumerable接口的類型都支持綁定到列表形元素,大多數集合類沒有繼承INotifyCollectionChanged接口,WPF提供了一個使用INotifyCollectionChanged接口的集合,ObservableCollction類

8.將Grid綁定到lstProducts對象的SelectItem屬性

<Grid DataContext="{Binding ElementName=lstProducts,Path=SelectedItem}">....</Grid>

9.綁定時,被綁定的數據對象可能還不存在(綁定控件對象時可以看該對象在xaml中是否已經定義),這時依然可以在Xaml中綁定對象類屬性(Binding Path),然后在代碼中生成數據對象后在與控件綁定

10.WPF列表控件提供了UI虛擬化(UI Virtualization)功能用于提高大列表的性能,UI虛擬化是列表僅為當前顯示項創建容器對象的一種技術

11.數據驗證:用于捕獲非法數據

① ExceptionValidationRule驗證:驗證失敗時,WPF會在綁定元素上將Validation.HasError設置為True,WPF自動將控件使用的模板切換到又Validation.ErrorTemplate定義的模板,創建包含錯誤細節的ValidationError對象,并加到Validation.Errors集合中,如果Binding.NotifyOnValidationError屬性設置為True,WPF就會在控件上引發Validation.Error事件

② IDataErrorInfo類:在數據對象中引發錯誤,并且要在binding中設置DataErrorValidationRule驗證規則,當修改了一個屬性后,IDataErrorInfo中的字符串索引器,以屬性名為Key對值進行驗證??梢宰远x驗證類并響應驗證錯誤

12.沒有Path的Binding:Binding源本身就是數據且不需要Path來指明,如下綁定表示將Text綁定到字符串類型mystring,mystring本身就是數據.Path后為"."或者空表示綁定source本身:

<TextBlock Text="{Binding source={StaticResource ResourceKye=mystring},Path=.}">

相信本文所述對大家C#程序設計的學習有一定的借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级在线亚洲天堂| 久久久久久久久综合| 超碰97人人做人人爱少妇| 在线观看国产精品淫| 亚洲伊人久久大香线蕉av| 亚洲国产精品字幕| 欧美在线视频网站| 久久久女女女女999久久| 国产成人在线亚洲欧美| 国产成人精品免费久久久久| 亚洲欧美在线x视频| 国产精品久久久久久久久久新婚| 日韩精品在线电影| 日韩精品在线观看一区二区| 国产精品尤物福利片在线观看| 久久99精品久久久久久噜噜| 久久久国产精品一区| 曰本色欧美视频在线| 日韩黄色av网站| 久久久人成影片一区二区三区| www.国产精品一二区| 日韩电视剧在线观看免费网站| 国产日韩欧美夫妻视频在线观看| 国产精欧美一区二区三区| 亚洲性xxxx| 国产成人福利视频| 午夜精品一区二区三区在线播放| 国产精品99蜜臀久久不卡二区| 欧美人在线观看| 亚洲理论片在线观看| 欧美精品www| 欧美激情精品久久久久久久变态| 亚洲va欧美va国产综合剧情| 91黑丝在线观看| 尤物yw午夜国产精品视频明星| 欧美另类在线播放| 国产在线视频91| 在线免费看av不卡| 欧美视频中文字幕在线| 亚洲成色777777在线观看影院| 日韩精品中文在线观看| 92版电视剧仙鹤神针在线观看| 奇米一区二区三区四区久久| 亚洲精品mp4| 日韩经典中文字幕在线观看| 亚洲国产精品久久久久秋霞蜜臀| 成人激情视频在线播放| 精品视频久久久| 伊人久久久久久久久久久久久| 国产精品午夜国产小视频| 456国产精品| 国产xxx69麻豆国语对白| 国产亚洲精品成人av久久ww| 亚洲精品一区二区在线| 亚洲人成在线电影| 日韩禁在线播放| 国产有码在线一区二区视频| 亚洲第一精品夜夜躁人人躁| 国产精品日本精品| 欧美一级视频免费在线观看| 国产精品美女久久久久av超清| 欧美电影在线播放| 日韩有码片在线观看| 91av成人在线| 亚洲国产精品视频在线观看| 91国产高清在线| 亚洲的天堂在线中文字幕| 操人视频在线观看欧美| 欧美成人亚洲成人日韩成人| 久久视频在线直播| 在线观看国产精品淫| 亚洲精品电影久久久| 亚洲人在线观看| 日本精品免费一区二区三区| 国产精品综合网站| 久久99久久亚洲国产| 91地址最新发布| 久久九九亚洲综合| 成人女保姆的销魂服务| 欧美日在线观看| 久久精品视频在线观看| 成人午夜黄色影院| 国产伊人精品在线| 亚洲精品国产拍免费91在线| 亚洲精选在线观看| 性色av一区二区三区红粉影视| 日本不卡高字幕在线2019| 欧美成人黑人xx视频免费观看| 欧美在线一区二区三区四| 91视频-88av| 欧美成人精品影院| 日韩一区av在线| 91国语精品自产拍在线观看性色| 国产精品自拍视频| 亚洲一区二区三区sesese| 国产精品丝袜久久久久久高清| 成人在线观看视频网站| 91伊人影院在线播放| 成人黄色片网站| 日韩精品在线观看视频| 亚洲成人中文字幕| 久久久999精品视频| 欧美成人性色生活仑片| 精品日本高清在线播放| 久久久久久久一| 国产亚洲一区精品| 久久欧美在线电影| 亚洲无限乱码一二三四麻| 欧美性高潮在线| 国产精品网红直播| 国产午夜精品美女视频明星a级| 久久免费少妇高潮久久精品99| 国产精品久久婷婷六月丁香| 国内精品免费午夜毛片| 欧美人与性动交a欧美精品| 欧美国产乱视频| 欧美激情视频免费观看| 另类视频在线观看| 欧美理论电影网| 日韩中文字幕在线精品| 亚州欧美日韩中文视频| 亚洲精品在线视频| 久久久久久有精品国产| 欧美在线视频网站| 亚洲精品少妇网址| 亚洲综合第一页| xvideos国产精品| 精品国产乱码久久久久久天美| 尤物九九久久国产精品的特点| 亚洲人成人99网站| 亚洲区中文字幕| 久久中国妇女中文字幕| 久久综合电影一区| 欧美色欧美亚洲高清在线视频| 欧美激情第一页xxx| 成人欧美一区二区三区黑人| 亚洲高清久久网| 91在线看www| 最近中文字幕日韩精品| 欧美性猛交xxxx久久久| 国产精品偷伦视频免费观看国产| 色综合久久精品亚洲国产| 狠狠久久五月精品中文字幕| 久久在线免费视频| 亚洲欧美在线免费观看| 欧美老女人在线视频| 国产成人精品视频在线| 超薄丝袜一区二区| 亚洲一区999| 亚洲精品久久久久国产| 精品国内自产拍在线观看| 国内精品小视频在线观看| 日韩电影在线观看中文字幕| 精品偷拍各种wc美女嘘嘘| 精品自在线视频| 97香蕉久久夜色精品国产| 国产精品精品久久久| 久久久久中文字幕2018| www.美女亚洲精品| 亚洲精品乱码久久久久久按摩观| 久久久久久久久久婷婷| 成人在线观看视频网站| 神马国产精品影院av| 日韩在线视频免费观看高清中文|