WPF數據綁定(二)


前面講了最近本的兩種數據綁定,這次講講資源綁定和Context綁定

1、資源綁定

同樣不需要寫代碼,僅僅需要配置XAML就可以了。

1             <TabItem Header="ResourceBinding">
2                 <StackPanel>
3                     <StackPanel.Resources>
4                         <sys:String x:Key="string1">this is a static string resource</sys:String>
5                     </StackPanel.Resources>
6                     <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Source={StaticResource string1}}" />
7                     <TextBlock Text="{Binding Path=Name, RelativeSource={RelativeSource AncestorLevel=2, Mode=FindAncestor, AncestorType={x:Type Grid}}}" />
8                 </StackPanel>
9             </TabItem>

其中第六行中Textblock的Text屬性就是針對靜態屬性的綁定。綁定的時一個字符串資源,資源的定義在第四行。

第七行的TextBlock是什么綁定呢?這個叫相對資源綁定,前面的靜態資源是絕對資源,比如我們在例子中用到的字符串就是stackpanel的一個資源,他的“位置”,從屬關系是絕對的。

而相對資源是以當前空間為出發點的相對位置,比如說在例子中的綁定的資源就是相對於該TextBlock的外圍的Grid的控件的的Name屬性。

重點是下面這句話:

RelativeSource={RelativeSource AncestorLevel=2, Mode=FindAncestor, AncestorType={x:Type Grid}}

AncestorLevel這個是相對的控件的偏移量,從1開始,每層向外加1,Mode是找尋的模式,這里的FindAncestor時說找祖先(Ancestor意為祖先),就是說找父控件,即外層的空件。AncestorType就是要找哪類控件。

2、Context綁定

同樣不需要寫代碼

 1             <TabItem Header="context binding">
 2                 <StackPanel>
 3                     <StackPanel.DataContext>
 4                         <local:Student Id="15" Name="Jean" Age="18"/>                        
 5                     </StackPanel.DataContext>
 6                     <TextBlock Text="{Binding Id}"/>
 7                     <TextBlock Text="{Binding Name}"/>
 8                     <TextBlock Text="{Binding Age}"/>
 9                 </StackPanel>
10             </TabItem>

我們原本定義了一個student類,現在給Stackpanel類設置一個DataContext,一個學生類。

同時讓TextBlock類的控件來綁定的顯示該學生類的信息。

顯示效果如下:

 當然我們也可以使用代碼來實現,將StackPanel類設置為一個學生類。效果是一樣的

代碼下載:

https://github.com/Dothegod/WPF_Training_Sample

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM