【问题标题】:Reuse XAML style for Rectangles in WPF Canvas [duplicate]在 WPF 画布中为矩形重用 XAML 样式 [重复]
【发布时间】:2020-01-25 07:41:26
【问题描述】:

我目前正在开发一个 .NET 4.7.1 应用程序。我需要在 WPF 中创建一个画布,在画布上放置一些矩形。 矩形确实有一定的风格。我不想每次都重写样式。

我正在寻找一种方法来重用我的画布元素的样式,类似于 HTML 中的 CSS。

<Canvas Grid.Row="2" ClipToBounds="True" Background="Gainsboro">
    <Rectangle Panel.ZIndex="3" Canvas.Left="25" Canvas.Top="25" Width="200" Height="100">
        <Rectangle.Fill>
            <LinearGradientBrush StartPoint="0,0" EndPoint="1,1" SpreadMethod="Repeat">
                <GradientStop Offset="0" Color="LightCoral"/>
                <GradientStop Offset="0.5" Color="LightCoral"/>
                <GradientStop Offset="0.5" Color="Gainsboro"/>
                <GradientStop Offset="1" Color="Gainsboro"/>
                <LinearGradientBrush.RelativeTransform>
                    <ScaleTransform ScaleX="0.01" ScaleY="0.01"/>
                </LinearGradientBrush.RelativeTransform>
            </LinearGradientBrush>
        </Rectangle.Fill>
    </Rectangle>
    <Rectangle Panel.ZIndex="2" Fill="LightCoral" Canvas.Left="450" Canvas.Top="50" Width="200" Height="100" />
</Canvas>

你知道如何在所有矩形上应用 Rectangle.Fill 吗?

非常感谢!

【问题讨论】:

  • 把样式放到Canvas.Ressources中

标签: c# wpf styles


【解决方案1】:

通过将样式放在 canvas.ressources 中,如下所示,画布中的所有矩形都将具有相同的渐变填充

<Canvas Height="200">
    <Canvas.Resources>
        <Style TargetType="Rectangle">
            <Setter Property="Fill">
                <Setter.Value>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1" SpreadMethod="Repeat">
                        <GradientStop Offset="0" Color="LightCoral"/>
                        <GradientStop Offset="0.5" Color="LightCoral"/>
                        <GradientStop Offset="0.5" Color="Gainsboro"/>
                        <GradientStop Offset="1" Color="Gainsboro"/>
                        <LinearGradientBrush.RelativeTransform>
                            <ScaleTransform ScaleX="0.01" ScaleY="0.01"/>
                        </LinearGradientBrush.RelativeTransform>
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
        </Style>
    </Canvas.Resources>
    <Rectangle Height="50" Width="50"/>
    <Rectangle Canvas.Left="70" Height="50" Width="50"/>
</Canvas>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2015-03-16
    • 2016-12-11
    相关资源
    最近更新 更多