一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - WPF基礎教程之元素綁定詳解

WPF基礎教程之元素綁定詳解

2022-03-07 13:28SmilelyCoding C#

這篇文章主要給大家介紹了關于WPF基礎教程之元素綁定的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

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

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

元素綁定

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

綁定表達式

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

?
1
2
3
4
<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不會引發異常來通知與數據綁定相關的問題。如果指定的元素或屬性不存在,那么不會收到任何的指示;相反,只是不能在目標屬性中顯示數據。

調試可通過Visual Studio的OutPut窗口查看,WPF會輸出綁定細節的跟蹤信息。

綁定模式

 

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

 

使用代碼創建綁定

?
1
2
3
4
5
Binding binding = new Binding();
binding.Source = sliderFontSize;
binding.Path = new PropertyPath("Value");
binding.Mode = BindingMode.TwoWay;
lblSimpleText.SetBinding(TextBlock.FontSizeProperty,binding);

多綁定

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

?
1
2
3
4
5
<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>

還可鏈接數據綁定。例如TextBox.Text屬性創建表達式以鏈接到TextBlock.FontSize屬性,而TextBlock.FontSize又鏈接到Slider.Value屬性的綁定表達式。

綁定更新

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

 

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

 

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

綁定延遲

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

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

綁定到非元素對象

WPF數據綁定基礎結構不能獲取私有信息或公有字段,必須是公有屬性中。

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

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

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

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

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

Source

綁定到靜態對象

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

2.綁定到資源

?
1
2
3
4
5
6
<Window.Resources>
 <FontFamily x:Key="CoustomFont">Calibri</FontFamily>
</Window.Resources>
<Grid>
 <TextBlock Text="{Binding Source={StaticResource CoustomFont},Path=Source}"></TextBlock>
</Grid>

RelativeSource

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

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

 

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

 

DataContext屬性

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

?
1
2
3
<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>

可以改成如下

?
1
2
3
4
5
<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>

總結

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

原文鏈接:https://www.cnblogs.com/lovezhangyu/p/10208381.html

延伸 · 閱讀

精彩推薦
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
主站蜘蛛池模板: 午夜影院免费体验 | 成人精品视频一区二区在线 | h片免费网站 | 国内会所按摩推拿国产 | 国产精品理论片在线观看 | 日本人欧美xx | 成人在线免费播放 | 四虎国产欧美成人影院 | 波多野结衣黑人系列在线观看 | 亚洲国产自拍在线 | 欧美日韩综合一区 | 91探花在线观看 | 农村妇女野外性生话免费视频 | 国产精品免费观在线 | 亚洲欧美一级夜夜爽w | 日本成日本片人免费 | 久久久久久久久性潮 | 美女脱了内裤让男桶爽 | 华人亚洲欧美精品国产 | 2019天天干夜夜操 | 亚洲区在线播放 | 人人福利| 亚洲精品www久久久久久久软件 | 免费看日韩 | 日本视频在线免费观看 | 免费在线看片网站 | 四虎在线成人免费网站 | 精品国产原创在线观看视频 | 亚洲欧洲淘宝天堂日本 | 国产精品怡红院永久免费 | 嫩草视频在线观看免费 | 大又大又黄又爽免费毛片 | 问一问免费咨询 | 国产欧美精品一区二区三区–老狼 | 特黄特级高清免费视频毛片 | 国产精品福利一区二区亚瑟 | 国内视频一区二区三区 | 青青国产在线视频 | 91久久线看在观草草青青 | 韩国三级年轻小的胰子完整 | 四虎影视在线观看2413 |