为WPF中的所有Rectangle,Label,Button等元素应用样式或属性

时间:2014-05-27 15:47:30

标签: wpf

如何在WPF中选择所有Rectangle,Label或Button等元素,以便从后面的代码中应用属性或为这些元素设置新资源?这可能吗?

例如:

allRectangleElements.Resources = (ResourceDictionary)FindResource("BlueBrushRect");

1 个答案:

答案 0 :(得分:1)

您可以使用此answer中的FindVisualChildren方法迭代所有Rectangle元素:

ResourceDictionary resourceDictionary = (ResourceDictionary)FindResource("BlueBrushRect");

foreach (Rectangle rectangle in FindVisualChildren<Rectangle>(this))
{
    rectangle.Resources = resourceDictionary;
}

在哪里&#34;这&#34;是我的Window对象。

但是如果你想在所有Rectangle元素上重复使用相同的ResourceDictionary / Setters,我建议使用implicit styles

<Window.Resources>
    <Style TargetType="Rectangle">
        <Style.Resources>
            <ResourceDictionary ... />
        </Style.Resources>
        <Style.Setters>
            <Setter ... />
            <Setter ... />
        </Style.Setters>
    </Style>
</Window.Resources>