首页 / WINDOWS / 背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定
背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5987字,纯文字阅读大概需要9分钟。
内容图文
![背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定](/upload/InfoBanner/zyjiaocheng/1202/061e2f8e5ea14d849312c331aa07d494.jpg)
作者:webabcd
介绍
背水一战 Windows 10 之 绑定
- TemplateBinding 绑定
- 与 RelativeSource 绑定
- 与 StaticResource 绑定
示例
1、演示 TemplateBinding 的用法
Bind/TemplateBindingDemo.xaml
< Page x:Class ="Windows10.Bind.TemplateBindingDemo" xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local ="using:Windows10.Bind" xmlns:d ="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable ="d" > < Grid Background ="Transparent" > < StackPanel Margin ="10 0 10 10" > <!-- 演示 TemplateBinding 的用法 TemplateBinding 是一个简单版的 Binding,用于在 ControlTemplate 中做属性之间的绑定(如果需要 Binding 的其他特性该怎么做呢?参见 BindingRelativeSource.xaml) --> < StackPanel.Resources > < Style x:Key ="ButtonStyle" TargetType ="Button" > < Setter Property ="Template" > < Setter.Value > < ControlTemplate TargetType ="Button" > < StackPanel > <!-- ContentPresenter 的 Width 绑定 Button 的 Width ContentPresenter 的 Height 绑定 Button 的 Width --> < ContentPresenter HorizontalContentAlignment ="Center" VerticalContentAlignment ="Center" Foreground ="White" Background ="Orange" Width =" {TemplateBinding Width} " Height =" {TemplateBinding Width} " /> </ StackPanel > </ ControlTemplate > </ Setter.Value > </ Setter > </ Style > </ StackPanel.Resources > < Button Content ="我是 Button" Width ="128" Style =" {StaticResource ButtonStyle} " /> </ StackPanel > </ Grid > </ Page >
2、演示 Binding 中的一个扩展标记 RelativeSource 的应用
Bind/BindingRelativeSource.xaml
< Page x:Class ="Windows10.Bind.BindingRelativeSource" xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local ="using:Windows10.Bind" xmlns:d ="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable ="d" > < Grid Background ="Transparent" > < StackPanel Margin ="10 0 10 10" > <!-- 演示 Binding 中的一个扩展标记 RelativeSource 的应用,其用于指定关联数据源为 Self 或 TemplatedParent --> <!-- RelativeSource={RelativeSource TemplatedParent} - 仅在 ControlTemplate 中适用,用于指定数据源来自引用了该 ControlTemplate 的 Control --> < StackPanel.Resources > < Style x:Key ="ButtonStyle" TargetType ="Button" > < Setter Property ="Template" > < Setter.Value > < ControlTemplate TargetType ="Button" > < StackPanel > < ContentPresenter Foreground ="White" /> <!-- TemplateBinding 是一个简单版的 Binding,他是 OneWay 的 如果在设计 ControlTemplate 时需要 Binding 的其他特性(比如我想要 TwoWay 的模式)该怎么办呢? 那就需要通过 Binding 来做绑定(这样就可以使用 Binding 的各种特性了),然后通过 RelativeSource={RelativeSource TemplatedParent} 来指定数据源来自引用了该 ControlTemplate 的 Control --> < Slider Minimum ="1" Maximum ="100" Foreground ="White" IsThumbToolTipEnabled ="False" Width =" {TemplateBinding Width} " Value =" {Binding Content, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}} " /> </ StackPanel > </ ControlTemplate > </ Setter.Value > </ Setter > </ Style > </ StackPanel.Resources > < Button Width ="300" Content ="50" Style =" {StaticResource ButtonStyle} " Margin ="5" /> <!-- RelativeSource={RelativeSource Self} - 指定数据源为自己本身 --> < TextBlock Text =" {Binding RelativeSource={RelativeSource Self}, Path=Tag} " Tag ="webabcd" Margin ="5" /> </ StackPanel > </ Grid > </ Page >
3、演示如何与 StaticResource 绑定
Bind/BindingStaticResource.xaml
< Page x:Class ="Windows10.Bind.BindingStaticResource" xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local ="using:Windows10.Bind" xmlns:d ="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable ="d" > < Grid Background ="Transparent" > < StackPanel Margin ="10 0 10 10" x:Name ="panel" > <!-- 演示如何与 StaticResource 绑定 关于 StaticResource 的说明请参见:/Resource/StaticResourceDemo.xaml --> < StackPanel.Resources > < x:Double x:Key ="TextFontSize" >32</x:Double><SolidColorBrush x:Key="TextForeground" Color="#00FF00"/><Style x:Key="MyStyle" TargetType="TextBox"><!--绑定 StaticResource 资源--><Setter Property="FontSize" Value="{Binding Source={StaticResource TextFontSize}}"/><!--绑定 StaticResource 资源的简化写法--><Setter Property="Foreground" Value="{StaticResource TextForeground}"/></Style></StackPanel.Resources><!--绑定 StaticResource 资源--><TextBox Text="我是TextBox" Style="{Binding Source={StaticResource MyStyle}}" Margin="5"/><!--绑定 StaticResource 资源的简化写法--><TextBox Text="我是TextBox" Style="{StaticResource MyStyle}" Margin="5"/><!--演示如何在 C# 端绑定 StaticResource--><TextBox Name="textBox" Text="我是TextBox" Margin="5"/></StackPanel></Grid></Page>
Bind/BindingStaticResource.xaml.cs
/* * 演示如何与 StaticResource 绑定(关于 StaticResource 的说明请参见:/Resource/StaticResourceDemo.xaml) */ using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Data; namespace Windows10.Bind { public sealed partial class BindingStaticResource : Page { public BindingStaticResource() { this .InitializeComponent(); this.Loaded += BindingStaticResource_Loaded; } // 在 C# 端绑定 StaticResourceprivatevoid BindingStaticResource_Loaded(object sender, RoutedEventArgs e) { // 实例化 Binding 对象 Binding binding = new Binding() { Source = panel.Resources["MyStyle"] }; // 将目标对象的目标属性与指定的 Binding 对象关联 BindingOperations.SetBinding(textBox, TextBox.StyleProperty, binding); } } }
OK
[源码下载]
原文:http://www.cnblogs.com/webabcd/p/5619119.html
内容总结
以上是互联网集市为您收集整理的背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定全部内容,希望文章能够帮你解决背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。