Не могу установить стиль для пути в словаре ресурсов - PullRequest
3 голосов
/ 03 декабря 2009

Я создаю стиль для Path в словаре ресурсов, как показано ниже:

<Style x:Key="HeaderPathStyle" TargetType="Path">
        <Setter Property="Opacity" Value="0.8"/>
        <Setter Property="HorizontalAlignment" Value="Stretch"/>
        <Setter Property="VerticalAlignment" Value="Stretch"/>
        <Setter Property="Stretch" Value="Fill"/>
        <Setter Property="StrokeThickness" Value="0.5"/>
        <Setter Property="Data" Value="M12.5,7 C47.333332,7 115.85664,7 117,7 C118.14336,7 122.1255,6.7291665 122.25,12 C122.3745,17.270834 122.25,18.333334 122.25,21.5 L12.5,21.5 z"/>
        <Setter Property="Fill">
            <Setter.Value>
                <RadialGradientBrush GradientOrigin="0.699000000953674,0.792999982833862">
                    <RadialGradientBrush.RelativeTransform>
                        <TransformGroup>
                            <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.4" ScaleY="2.188"/>
                            <SkewTransform CenterX="0.5" CenterY="0.5"/>
                            <RotateTransform CenterX="0.5" CenterY="0.5"/>
                            <TranslateTransform X="0.017" Y="0.009"/>
                        </TransformGroup>
                    </RadialGradientBrush.RelativeTransform>
                    <GradientStop Color="#FF6C6C8E" Offset="1"/>
                    <GradientStop Color="#FFADD8E6" Offset="0"/>
                </RadialGradientBrush>
            </Setter.Value>
        </Setter>
    </Style>

Затем используйте его как usercontrol, как показано ниже:

 <Path Style="{StaticResource HeaderPathStyle}"/>

Но я получаю ошибку. Если я установлю Path в пользовательском элементе управления xaml напрямую с той же настройкой, ошибки не будет. Как это исправить?

1 Ответ

1 голос
/ 03 декабря 2009

Вы не можете просто создать словарь ресурсов и ожидать, что все размещенные там ресурсы будут доступны немедленно. Если вы хотите создать ресурс, доступный из любого UserControl, поместите этот ресурс в файл App.xaml в элемент * <Application.Resources>.

Если вы не хотите кластеризовать App.Xaml всеми видами ресурсов, но по-прежнему хотите, чтобы они были глобально доступны, тогда использование словаря ресурсов - правильный подход, но тогда вам нужно создать ссылку на этот словарь в приложении. .xaml: -

<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
       <ResourceDictionary Source="YourDictionaryFile.xaml" />
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...