当样式触发器在xaml中触发时,将样式应用于多个控件
问题描述:
当用户输入信息时,我希望所有控件的外观和操作方式相同,因此我做了以下操作。当样式触发器在xaml中触发时,将样式应用于多个控件
标签和TextBox控件是一个StackPanel为:
<StackPanel Style="{StaticResource ResourceKey=myInput}" HorizontalAlignment="Left">
<Label Content="Label" Name="label1" />
<TextBox Name="textBox1" ></TextBox>
</StackPanel>
风格“myInput”是:
<Style x:Key="myInput" TargetType="{x:Type StackPanel}">
<Style.Resources>
<Style TargetType="{x:Type Label}" BasedOn="{StaticResource {x:Type Label}}">
<Setter Property="FontSize" Value="12" />
</Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Margin" Value="5,-5,2,2"></Setter>
<Setter Property="Height" Value="23"/>
<Setter Property="VerticalAlignment" Value="Top"/>
<Style.Triggers>
<Trigger Property="IsFocused" Value="true">
<Setter Property="Background" Value="Blue" >
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Style.Resources>
</Style>
现在每当我这种风格适用于有一个StackPanel时间标签和文本框的文本框的背景变为蓝色时,它会收到焦点。
如何在事件发生时将标签的fontweight设置为粗体?我想用xaml来做到这一点。
答
使用您Label
一个DataTrigger
看起来,看看键盘焦点是同时包含对象
<Style TargetType="{x:Type Label}" BasedOn="{StaticResource {x:Type Label}}">
<Setter Property="FontSize" Value="12" />
<Style.Triggers>
<DataTrigger Value="True" Binding="{Binding IsKeyboardFocusWithin,
RelativeSource={RelativeSource AncestorType={x:Type StackPanel}}}">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
您是否在寻找通过XAML设置大胆fontWeight设置父 。还是你想在事件上实现风格改变? –
2012-03-26 19:31:39
StackPanel
内?像这样:我想在文本框获得焦点时这样做。所以是的,我想改变事件的风格。标签将始终是文本框的兄弟,也许我可以使用某种相对绑定。 – 2012-03-26 19:34:53