WPF 綁定方式Binding、TemplateBinding、TemplatedParent


屬性binding方式

綁定到DataContext

<!--綁定到DataContext-->
<Button Content="{Binding DataTime}"/>
<Button Content="{Binding RelativeSource={RelativeSource self},Path=DataTime}"/>

<!--綁定到DataContext,並設置綁定模式-->
<Button x:Name="btn" Content="{Binding DataTime,Mode=OneTime}"/>

<!--綁定到DataContext,並設置更新模式-->
<Button Content="{Binding DataTime,UpdateSourceTrigger=PropertyChanged}"/>

<!--綁定到DataContext,並設置轉換模式-->
<Button Content="{Binding DataTime,Converter={StaticResource ConvertResource},ConverterParameter=btn1}"/>

綁定到Element

<!--綁定到Element中指定屬性-->
<Button Content="{Binding ElementName=btn,Path=Content}"/>

<!--綁定到相對位置中的自身模式-->
<Button Content="{Binding Tag, RelativeSource={RelativeSource Self}}" Tag="MyTag"/>

綁定到父級別

<!--綁定到相對位置中的父級別查找模式 綁定到指定類型-->
<Button Content="{Binding Content, RelativeSource={RelativeSource AncestorType=UserControl}}"/>

<!--綁定到相對位置中的父級別查找模式 綁定到指定層級-->
<Button Content="{Binding Content, RelativeSource={RelativeSource Mode=FindAncestor,AncestorLevel=2}}"/>

<!--綁定到相對位置中的父級別查找模式 綁定到模板內容 Template使用者元素的屬性上-->
<Button Content="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}"/>

<!--GroupBox.Heade自定義顯示-->
<GroupBox>
    <GroupBox.HeaderTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Header, RelativeSource={RelativeSource AncestorType={x:Type GroupBox},AncestorLevel=1}}" FontSize="12"/>
        </DataTemplate>
    </GroupBox.HeaderTemplate>
    <Grid x:Name="grdContent">
	</Grid>
</GroupBox>

TemplateBinding與Binding

TemplateBinding是Binding的一個輕量級版本,最主要的用途是內置在模板中綁定模板化元素的屬性。
Background="{TemplateBinding Foreground}"
Background="{Binding Foreground, RelativeSource={RelativeSource TemplatedParent}}"

TemplateBinding的數據綁定是單向的,從數據源到目標。
TemplateBinding不能對數據對象進行自動轉換,數據源和目標的數據類型不同時候,需要自己寫轉換器。


免責聲明!

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



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