wpf/Silverlight/wp中如何绑定模板中的属性
2013-10-13 12:07
302 查看
<Style TargetType="{x:Type TabItem}" x:Key="EditorTabItemStyle"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TabItem}"> <Border x:Name="layout" BorderBrush="Gray" BorderThickness="1,1,1,0" Background="{TemplateBinding Background}" CornerRadius="3" Margin="2,0,2,0"> <Grid Height="20"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition Width="25"/> </Grid.ColumnDefinitions> <TextBlock TextAlignment="Center" Text="{TemplateBinding Header}" ToolTip="{TemplateBinding ToolTip}" Tag="{TemplateBinding Tag}" Grid.Column="0" Margin="4,0,3,0" VerticalAlignment="Center" HorizontalAlignment="Center"> <TextBlock.ContextMenu> <ContextMenu DataContext="{TemplateBinding Tag}"> <MenuItem Header="保存" Click="Save_Command" IsEnabled="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ContextMenu},AncestorLevel=1},Path=DataContext}" > </MenuItem> <MenuItem Header="关闭" Click="Close_Command"> </MenuItem> </ContextMenu> </TextBlock.ContextMenu> </TextBlock> <Button Content="X" Grid.Column="1" Height="8" Width="8" Margin="4,1,3,2" Tag="{TemplateBinding Header}" Click="Button_Click" Background="{x:Null}" BorderBrush="{x:Null}" VerticalAlignment="Center"> <Button.Template> <ControlTemplate > <Grid> <Rectangle> <Rectangle.Fill> <VisualBrush> <VisualBrush.Visual> <Path x:Name="btnPath" Data="M0 0L10 10M0 10L10 0" Stroke="Gray" StrokeThickness="1"/> </VisualBrush.Visual> </VisualBrush> </Rectangle.Fill> </Rectangle> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="btnPath" Property="Stroke" Value="Red"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Button.Template> </Button> </Grid> </Border> <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="White"/> <Setter TargetName="layout" Property="Margin" Value="2,0,2,-1.5"/> </Trigger> <Trigger Property="IsSelected" Value="false"> <Setter Property="Background" Value="LightBlue"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>
上面实例代码展示如何将tabitem中的字段绑定到menuitem上,先通过TemplateBinding获取属性值赋值到DataContext属性,然后再通过指定的控件类型和第几个来绑定
IsEnabled="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ContextMenu},AncestorLevel=1},Path=DataContext}" >
具体说明可以参考:
/content/3897089.html
中的2.9的说明
相关文章推荐
- 为什么silverlight的PasswordBox控件的password属性不可以绑定?该如何实现绑定?
- 【WPF】如何把一个枚举属性绑定到多个RadioButton
- wpf中如何在xaml中绑定cs中类的属性
- 在wpf中如何在xaml中绑定cs中类的属性
- WPF 如何在后台进行控件属性的绑定MVVM
- WP下数据绑定的数据模板,目标属性…
- js模板加载script模板如何绑定事件以及事件属性的解决办法
- 【技术原创】如何在SilverLight/WPF中用代码给DataGrid动态组织模板内容
- WPF:Hyperlink如何绑定数据
- 【转】Mvvm Light Toolkit for wpf/silverlight系列之数据绑定
- ASP.Net控件模板中根据绑定对象的属性控制元素隐现技巧
- 【转】WPF中PasswordBox控件的Password属性的数据绑定
- WPF listview 如何绑定 Oracle 数据库 以及不错的oralceHelper.cs 文件
- WPF绑定不到父控件属性
- WPF依赖属性,绑定通知机制系列补充说明
- 如何取得DataGrid绑定列和模板列中的值
- [WPF源码分析]ContentControl依赖项属性的双向绑定,two-way binding view's DependencyProperty and ViewModel's variable
- 稳扎稳打Silverlight(65) - 5.0绑定之通过 ICustomTypeProvider 绑定动态生成的属性
- WPF基础到企业应用系列7——深入剖析依赖属性(WPF/Silverlight核心)
- WPF学习1 DataGrid 采用模板列进行数据绑定