Как использовать ресурс приложения из ControlTemplate? - PullRequest
0 голосов
/ 20 мая 2011

Я получаю эту ошибку

Не удается найти имя «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 голосов
/ 20 мая 2011

Вам не нужно устанавливать атрибут x:Name для вашего LinearGradientBrush, если он находится в ResourceDictionary (то есть в коллекции ресурсов).Вам просто нужно установить x:Key, чтобы иметь к нему доступ.

Ошибка, которую вы получаете, не будет вызвана кодом Brush="{StaticResource disable_glow}".Если ресурсы не найдены, он скажет что-то вроде «Ресурс не найден».Звучит так, как будто вы пытаетесь получить доступ к нему по имени.

Вам необходимо убедиться, что ваш LinearGradientBrush определен до вашего ControlTemplate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...