我目前在整个应用程序中都有一组Rectangles,我在XAML中定义的方式如下:

<Rectangle Fill="LightBlue"/>


目前我可能有Rectangles,所以更改ColourRectangle并不是太大的问题。

但是,随着我的App的发展,毫无疑问,我会拥有更多的Rectangles,如果确定需要更改其颜色,我可以看到可伸缩性将是一个大问题。

存储BackgroundRectangle以便使我可以在一处更改它以更改程序中所有Rectangles的最有效方法是什么?

这也将扩展为TextBox样式。如果我想为整个应用程序中的每个TextBox设置一个自定义样式,那么什么是可扩展的方法呢?

最佳答案

尝试使用样式:

将其插入您的app.xaml中以影响所有Windows中的所有Rectangles

<Application.Resources>
    <!-- Use the Color ala "Lorentz Vedeler" to make it reusable -->
    <SolidColorBrush x:Key="myRectangleBrush" Color="LightBlue" />
    <!-- Apply it in Style -->
    <Style TargetType="Rectangle">
        <Setter Property="Fill" Value="{StaticResource myRectangleBrush}" />
    </Style>
</Application.Resources>


要么

对于当前Rectangles中的所有Window

<Window.Resources>
    <Style TargetType="Rectangle">
        <Setter Property="Fill" Value="LightBlue" />
    </Style>
</Window.Resources>


注意:

不要指定x:Key,因为这样您就需要为要应用它的每个Style设置RectangleTargetType会将其应用于该UI-Elements的所有Type

 <Window.Resources>
    <Style TargetType="Rectangle" x:Key="RectStyle">
        <Setter Property="Fill" Value="LightBlue" />
    </Style>
</Window.Resources>

<Rectangle Style="{StaticResource RectStyle}" />

10-04 22:28