如何使用ControlTemplate中的应用程序资源?

时间:2011-05-20 07:28:49

标签: wpf templates

我收到此错误

  

'disable_glow'名称在'System.Windows.Controls.ControlTemplate'的名称范围内找不到。

尝试这样做时:

应用程序的资源:

<LinearGradientBrush Opacity="0.0" StartPoint="0,0" 
  EndPoint="0,1" x:Key="disable_glow" x:Name="disable_glow">
    <GradientStop Offset="0.0" Color="#4D4D4D" />
    <GradientStop Offset="0.1" Color="#404040" />
    <GradientStop Offset="1.0" Color="#2E2E2E" />
</LinearGradientBrush>

在这里:

同一个地方,在控件样式的ControlTemplate中:

<Border CornerRadius="4">
    <Border.Background>
        <DrawingBrush>
            <DrawingBrush.Drawing>
                <DrawingGroup>
                    <GeometryDrawing Brush="{StaticResource disable_glow}">
                        <GeometryDrawing.Geometry>
                            <RectangleGeometry Rect="0,0,1,1"/>
                        </GeometryDrawing.Geometry>
                    </GeometryDrawing>
...

当我使用StaticResource或DynamicResource关键字时,我得到相同的错误。

那么如何正确使用它呢?

1 个答案:

答案 0 :(得分:0)

如果它位于ResourceDictionary(即Resources集合)中,则无需在LinearGradientBrush上设置x:Name属性。您只需将x:Key设置为可以访问它。

Brush="{StaticResource disable_glow}"代码不会产生您获得的错误。如果没有找到资源,则会说“未找到资源”。听起来你正在尝试按名称访问它。

您需要确保在ControlTemplate之前定义了LinearGradientBrush。