欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C#教程

當前位置:主頁 > 軟件編程 > C#教程 >

WPF基礎(chǔ)教程之元素綁定詳解

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C#教程|點擊: 次

前言

簡單的說,數(shù)據(jù)綁定是一種關(guān)系,該關(guān)系告訴WPF從一個源對象提取一些信息,并使用這些信息設(shè)置目標對象的屬性。目標屬性總是以來屬性,并且通常位于WPF元素中,畢竟,WPF數(shù)據(jù)綁定的最終目的是在用戶界面中顯示一些信息。然而,源對象可以是任何內(nèi)容,從另一個WPF元素到ADO.NET數(shù)據(jù)對象(如DataTable和DataRow對象)或自己創(chuàng)建的純數(shù)據(jù)對象。

下面話不多說了,來一起看看詳細的介紹吧

元素綁定

數(shù)據(jù)綁定最簡單的形式是源對象是WPF元素而且源屬性是依賴項屬性。依賴項屬性具有內(nèi)置的更改通知支持。因此當源對象中改變依賴屬性的值時,會立即更新目標對象中的綁定屬性。

綁定表達式

當使用綁定表達式時,不必對源對象做任何改動,只需配置源對象使其屬性具有正確的值范圍。

<Slider Grid.Row="0" Name="sliderFontSize" Margin="3" Minimum="1" Maximum="40" Value="10" TickFrequency="1" TickPlacement="TopLeft"> 
</Slider>
<TextBlock Grid.Row="1" Margin="10" Text="Simple Text" Name="lblSimpleText"FontSize="{Binding ElementName=sliderFontSize,Path=Value}">   
</TextBlock>

綁定錯誤

WPF不會引發(fā)異常來通知與數(shù)據(jù)綁定相關(guān)的問題。如果指定的元素或?qū)傩圆淮嬖冢敲床粫盏饺魏蔚闹甘?;相反,只是不能在目標屬性中顯示數(shù)據(jù)。

調(diào)試可通過Visual Studio的OutPut窗口查看,WPF會輸出綁定細節(jié)的跟蹤信息。

綁定模式

名稱 說明
OneWay 當源屬性變化時更新目標屬性。
TwoWay 當源屬性變化時更新目標屬性,并且當目標屬性變化時更新源屬性。
OneTime 最初根據(jù)源屬性設(shè)置目標屬性,然而,其后的所有改變都會被忽略。通常如果知道屬性不會變化,可通過這種模式降低開銷。
OneWayToSource 與OneWay相反,當目標屬性變化時更新源屬性。
Default 此類綁定依賴于目標屬性,既可以是雙向的,也可以是單向的。除非明確指定了一種綁定模式,否則所有綁定使用該方法

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

Binding binding = new Binding();
binding.Source = sliderFontSize;
binding.Path = new PropertyPath("Value");
binding.Mode = BindingMode.TwoWay;
lblSimpleText.SetBinding(TextBlock.FontSizeProperty,binding);

多綁定

可以設(shè)置TextBlock元素從文本框中獲取文本,從單獨的顏色列表中選擇當前前景色和背景色,等等。

  <TextBlock Grid.Row="1" Margin="10" Name="lblSimpleText"
     FontSize="{Binding ElementName=sliderFontSize,Path=Value}"
     Text="{Binding ElementName=txtContent,Path=Text}"
     Foreground="{Binding ElementName=lstColors,Path=SelectedItem.Tag}"> 
  </TextBlock>

還可鏈接數(shù)據(jù)綁定。例如TextBox.Text屬性創(chuàng)建表達式以鏈接到TextBlock.FontSize屬性,而TextBlock.FontSize又鏈接到Slider.Value屬性的綁定表達式。

綁定更新

源的變化會立即影響目標,然而反向的傳遞從目標到源未必會立即發(fā)生。他們的行為由Binding.UpdateSourceTrigger屬性控制。


名稱
說明
PropertyChanged 當目標屬性變化時立即更新源。
LostFocus 當目標屬性變化并且目標屬性失去焦點時跟新源。
Explicit 除非調(diào)用BindingExpression.UpdateSource()方法,否則無法更新源。
Default 根據(jù)目標屬性的元素確定更新行為。大多數(shù)屬性的默認行為是PropertyChanged,但TextBox.Text屬性的默認行為是LostFocus

表中列出的值不影響目標的更新方式,他們僅控制OneWay或OneWayToSource模式的綁定中源的更新方式。

綁定延遲

用戶停止輸入500毫秒后更新源對象

<TextBox Text="{Binding ElementName=txtSampleText,Path=FontSize,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,Delay=500}" Name="txtFontSize">
</TextBox>

綁定到非元素對象

WPF數(shù)據(jù)綁定基礎(chǔ)結(jié)構(gòu)不能獲取私有信息或公有字段,必須是公有屬性中。

綁定到非元素對象時,需要放棄Binding.ElementName屬性,并使用以下屬性之一。

  • Source:該屬性是指向源對象的引用,提供數(shù)據(jù)的對象。
  • RelativeSource:這是引用,使用RelativeSource對象指向源對象。有了這個附加層,在在當前元素的基礎(chǔ)上構(gòu)建引用。這似乎增加了復雜程度,

但實際上RelativeSource屬性是一種特殊工具,當編寫控件模版及數(shù)據(jù)模版時是很方便的。

  • DataContext:如果沒有使用Source或RelativeSource屬性指定源,WPF就從當前元素開始在元素樹中向上查找。檢查每個屬性的DataContext屬性,并使用第一個飛空的DataContext屬性。

當將同一個對象的多個屬性綁定到不同的元素時,DataContext屬性是非常有用的,因為可在更高層次的容器對象上,設(shè)置DataContext屬性。

Source

綁定到靜態(tài)對象

 <TextBlock Text="{Binding Source={x:Static SystemFonts.IconFontFamily},Path=Source}"></TextBlock>

2.綁定到資源

 <Window.Resources>
  <FontFamily x:Key="CoustomFont">Calibri</FontFamily>
 </Window.Resources>
 <Grid>
  <TextBlock Text="{Binding Source={StaticResource CoustomFont},Path=Source}"></TextBlock>
 </Grid>

RelativeSource

<TextBlock Text="{Binding Path=Title,RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}}}"></TextBlock>

RelativeSource對象使用FindAncestor模式,該模式告知查找元素樹知道發(fā)現(xiàn)AncestorType屬性定義的元素類型。
FindAncestor模式有4種。

名稱                 
說明
Self 表達式綁定到同一元素的另一個屬性上。
FindAncestor 表達式綁定到父元素。WPF將查找元素樹直至發(fā)現(xiàn)期望的父元素。為了指定父元素,還必須設(shè)置AncestorType屬性以指示希望查找的父元素類型。此外,還可以用AncestorLevel屬性略過發(fā)現(xiàn)的一定的數(shù)量的特定元素。例如當一棵樹中查找時,如果希望綁定到第三個ListBoxItem類型的元素,應(yīng)當使用如下設(shè)置,AncestorType={x:Type ListBoxItem};并且AncestorLevel=3,從而略過前連個ListBoxItem元素。默認值是1,并在找到第一個匹配的元素停止查找。
PreviousData 表達式綁定到數(shù)據(jù)綁定列表中前一個數(shù)據(jù)項。在列表中使用這種模式。
TemplateParent 表達式綁定到應(yīng)用模版的元素。只有當綁定位于控件模版或數(shù)據(jù)模版內(nèi)部時,這種模式才能工作。

DataContext屬性

大量元素綁定到同一對象。

<TextBlock Text="{Binding Source={x:Static SystemFonts.IconFontFamily},Path=Source}"></TextBlock>
 <TextBlock Text="{Binding Source={x:Static SystemFonts.IconFontFamily},Path=Source}"></TextBlock>
 <TextBlock Text="{Binding Source={x:Static SystemFonts.IconFontFamily},Path=Source}"></TextBlock>

可以改成如下

<StackPanel DataContext="x:Static SystemFonts.IconFontFamily">
  <TextBlock Text="{Binding Path=Source}"></TextBlock>
  <TextBlock Text="{Binding Path=Source}"></TextBlock>
  <TextBlock Text="{Binding Path=Source}"></TextBlock>
 </StackPanel>

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對我們的支持。

上一篇:C#自動類型轉(zhuǎn)換與強制類型轉(zhuǎn)換的講解

欄    目:C#教程

下一篇:C#制作二維柱狀圖方法

本文標題:WPF基礎(chǔ)教程之元素綁定詳解

本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/4955.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有