如何从样式中影响子控件属性

Chr*_*ide 10 wpf xaml styles

我正在创建一个针对按钮的样式.将应用样式的按钮在其内部的堆栈面板中具有图像和文本块.我希望根据某些条件使用触发器来影响子控件的属性.

我想使用按钮样式来影响stackpanels方向以及图像定义的宽度.

我已经查看了样式设置器的属性intellisence中可用的各种子控件类型......我可以看到像Grid,DockPanel和TextBlock这样的东西......但是我正在寻找的那些非常值得注意他们缺席.

我不能影响某些儿童控制类型的原因吗?有没有办法在不滚动自定义控件的情况下这样做,该控件明确地暴露了我想要影响的子控件属性?

Lou*_*ann 23

您可以使用隐式样式:

<Style TargetType="Button" x:Key="myButtonStyle"> <!-- Has a key, will only be applied on elements that have their style set to {StaticResource myButtonStyle} -->
   <Setter Property="Background" Value="Green" />
   ...
   <Style.Resources>
      <Style TargetType="Image"> <!-- No key, so it is implicit and will apply to any child element of type Image -->
         <Setter Property="Height" Value="20" />
         ...
      </Style>
   </Style.Resources>
</Style>
Run Code Online (Sandbox Code Playgroud)

当然你也可以添加触发器.

  • 这很完美!我不知道你可以在风格上设置资源.这正是我想要的.当网站强制延迟到期时,我会在几分钟内接受您的回答.谢谢! (4认同)