麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

第8章 元素綁定(1)——概述、創(chuàng)建設(shè)置綁定和綁定到非元素對(duì)象

2019-11-11 05:32:04
字體:
供稿:網(wǎng)友

一、概述

①簡(jiǎn)單地說,數(shù)據(jù)綁定就是將源對(duì)象的屬性綁定到目標(biāo)對(duì)象的屬性。

②源對(duì)象可以是任何內(nèi)容,如WPF元素、ADO.NET對(duì)象或自行創(chuàng)建的純數(shù)據(jù)對(duì)象。

③數(shù)據(jù)綁定的最簡(jiǎn)單情形是元素綁定,即源對(duì)象是WPF元素而且源屬性是依賴項(xiàng)屬性。因?yàn)橐蕾図?xiàng)屬性具有內(nèi)置的更改通知支持。因此,當(dāng)在源對(duì)象中改變依賴項(xiàng)屬性的值時(shí),會(huì)立即更新目標(biāo)對(duì)象中的綁定屬性。

二、綁定表達(dá)式

<TextBlock Margin="10" Name="lblSampleText"     FontSize="{Binding ElementName=sliderFontSize, Path=Value}"    Text="Simple Text"></TextBlock>①綁定表達(dá)式使用XAML標(biāo)記擴(kuò)展(因此具有花括號(hào))。②綁定表達(dá)式以單詞Binding開頭。元素到元素的綁定需配置兩個(gè)屬性:ElementName屬性(指示源元素)和Path屬性(指示源元素中的屬性)。

三、綁定錯(cuò)誤

當(dāng)指定的元素或?qū)傩圆淮嬖跁r(shí),WPF不會(huì)報(bào)錯(cuò),只是不能在目標(biāo)屬性中顯示數(shù)據(jù)。

四、綁定模式

綁定模式有五種,如下圖。在應(yīng)用時(shí)推薦明確設(shè)置綁定模式。

五、使用代碼創(chuàng)建綁定

①在XAML標(biāo)記中使用Binding標(biāo)記擴(kuò)展來聲明綁定表達(dá)式通常最高效。然而也可以用代碼創(chuàng)建綁定。

Binding binding = new Binding();binding.Source = sliderFontSize;binding.Path = new PRopertyPath("Value");binding.Mode = BindingMode.TwoWay;lblSampleText.SetBinding(TextBlock.FontSizeProperty, binding);②可以通過BindingOperation類的兩個(gè)靜態(tài)方法移除綁定。

ClearBinding()方法移除具體元素的具體依賴項(xiàng)屬性的綁定

BindingOperations.ClearBinding(lblSampleText, TextBlock.FontSizeProperty);ClearAllBindings()方法移除具體元素的所有綁定
BindingOperations.ClearAllBindings(lblSampleText);③不管是通過代碼創(chuàng)建的綁定,還是通過XAML標(biāo)記創(chuàng)建的綁定,都可以使用上面兩個(gè)方法刪除綁定。④通過代碼創(chuàng)建綁定主要有以下應(yīng)用場(chǎng)景:

A:創(chuàng)建動(dòng)態(tài)綁定

B:刪除綁定

C:創(chuàng)建自定義控件(為了讓他人更容易地修改自定義控件的外觀,需要將特定細(xì)節(jié)(如事件處理程序和數(shù)據(jù)綁定表達(dá)式)從標(biāo)記移到代碼中。

六、使用代碼檢索綁定

可使用代碼檢索綁定并檢查其屬性,而不必考慮綁定最初是用代碼還是標(biāo)記創(chuàng)建的。有兩種方式:

①通過BindingOperations.GetBinding()來檢索對(duì)應(yīng)的Binding對(duì)象。

假如有如下綁定:

<TextBlock Margin="10" Name="lblSampleText"     FontSize="{Binding ElementName=sliderFontSize, Path=Value, Mode=TwoWay}"    Text="Simple Text"></TextBlock>可使用以下代碼獲取綁定:
Binding binding = BindingOperations.GetBinding(txtBound, TextBox.TextProperty);通過綁定對(duì)象就可以查看其屬性:

binding.ElementName:綁定源對(duì)象的名稱

binding.Path:從綁定源對(duì)象提取的對(duì)應(yīng)屬性的值

binding.Path.Path:獲取綁定源對(duì)象的綁定屬性名稱

binding.Mode:用于告知綁定何時(shí)更新目標(biāo)元素②通過BindingOperations.GetBindingExpression()方法獲取更實(shí)用的BindingExpression對(duì)象

BindingExpression expression = BindingOperations.GetBindingExpression(txtBound, TextBox.TextProperty);

通過BindingExpression對(duì)象可以查看如下屬性:

expression.ResolvedSource:獲取綁定對(duì)象的引用

expression.ResolvedSourcePropertyName:獲取綁定源對(duì)象的綁定屬性名稱七、綁定更新和綁定延遲

①建立綁定后源對(duì)象屬性的變化會(huì)立即影響目標(biāo)屬性,然而,反方向的變化,即從目標(biāo)到源不會(huì)立即發(fā)生。它受綁定的UpdateSourceTrigger屬性控制。

②上圖中列出的值不影響源到目標(biāo)的更新,他僅能控制TwoWay或OneWayToSource模式中目標(biāo)到源的更新。

③通過設(shè)置綁定的Delay屬性可以延遲更新

<TextBox Name="txtBound"     Text="{Binding ElementName=lblSampleText, Path=FontSize, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Delay=500}    " Width="100"></TextBox>八、綁定到非元素對(duì)象①綁定到非元素對(duì)象時(shí),只需要將綁定中的ElementName屬性換成以下三個(gè)屬性中的一個(gè)即可:

Source:指向數(shù)據(jù)對(duì)象

RelativeSource:可根據(jù)相對(duì)于目標(biāo)對(duì)象的關(guān)系指向源對(duì)象(通過該屬性可將元素綁定到自身或其父元素)。多用于編寫控件模版或數(shù)據(jù)模版。

DataContext:如果綁定中沒有使用Source或RelativeSource屬性指定源,WPF就從當(dāng)前元素開始在元素樹中國(guó)向上查找。檢查每個(gè)元素的DataContext屬性,并使用第一個(gè)非空的DataContext屬性。一般用于將大量元素綁定到同一個(gè)對(duì)象。

DataContext實(shí)例代碼:

<StackPanel Margin="10" DataContext="{x:Static SystemFonts.IconFontFamily}">    <TextBlock Margin="5" Text="{Binding Path=Source}"></TextBlock>    <TextBlock Margin="5" Text="{Binding Source={x:Static SystemFonts.IconFontFamily}, Path=LineSpacing}"></TextBlock>    <TextBlock Margin="5" Text="{Binding Source={x:Static SystemFonts.IconFontFamily}, Path=FamilyTypefaces[0].Style}"></TextBlock>    <TextBlock Margin="5" Text="{Binding Source={x:Static SystemFonts.IconFontFamily}, Path=FamilyTypefaces[0].Weight}"></TextBlock>    <TextBlock Margin="5" Text="{Binding Source={StaticResource CustomFont}, Path=Source}"></TextBlock></StackPanel>


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91精品国产一区二区在线观看 | 久久99国产伦子精品免费 | 免费午夜视频在线观看 | 成年人精品视频 | 免费国产精品视频 | 精品在线视频观看 | 中文字幕在线观看国产 | 91色一区二区三区 | 成人精品视频网站 | 免费在线观看成人av | 国产精品亚洲一区二区三区在线观看 | 中文字幕国产日韩 | 久久精品站 | 久久精品亚洲一区 | 精品国产1区2区3区 av视屏 | 伊人在线视频 | 成人毛片网站 | 日韩一级免费毛片 | 粉嫩蜜桃麻豆免费大片 | 久久久免费观看完整版 | 播色网 | 国产成人在线免费观看视频 | 久久男| 欧美三级短视频 | 精品国产一级毛片 | 亚洲综合网站 | 999久久久 | 国产免费中文字幕 | 一区二区三区无码高清视频 | 精品亚洲网站 | 久久精品视频一区二区三区 | 欧美日本日韩 | 国产人成精品一区二区三 | 在线亚洲欧美 | 美女久久久久久久久 | 一级一级一级一级毛片 | 毛片免费在线视频 | 性爱视频免费 | 91精品老司机 | 牛牛视频在线 | 欧美一级毛片一级毛片 |