12

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

我想使用按钮样式来影响堆栈面板的方向以及图像的定义宽度。

我已经查看了样式设置器的属性智能中可用的各种子控件类型...我可以看到诸如 Grid、DockPanel 和 TextBlock 之类的东西...但我正在寻找的那些在他们的缺席。

当我不能影响某些儿童控制类型时,是否有原因?有什么方法可以在不滚动自定义控件的情况下这样做,该控件显式公开我希望影响的子控件属性?

4

1 回答 1

28

您可以使用隐式样式:

<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>

当然,您也可以添加触发器。

于 2012-04-12T16:34:10.547 回答