Ошибка StaticResource: `{DependencyProperty.UnsetValue} 'не является допустимым значением для свойства - PullRequest
1 голос
/ 25 марта 2019

Не уверен, что я тут не так делаю.

У меня есть Colors, определенный в ResourceDictionary: Colors.xaml:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Color x:Key="Normal">#FF404040</Color>
</ResourceDictionary>

Затем используется в Brushes.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Colors.xaml"/>
        <!-- here I may have more colors-->
    </ResourceDictionary.MergedDictionaries>
    <SolidColorBrush x:Key="Color" Color="{StaticResource Normal}" />
    <!-- here I may have more brushes-->
</ResourceDictionary>

Затем Brushes объединяются в Generic.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Brushes.xaml"/>
        <!-- here I may have more resources-->
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

Теперь, если я использую Brushes, скажем, Border Style, вот так:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="BorderContainer" TargetType="{x:Type Border}">
        <Setter Property="Background" Value="{StaticResource Color}"/>
    </Style>
</ResourceDictionary>

Я должен использовать его как DynamicResource, но если он используется как StaticResource, то я получил эту ошибку во время выполнения:

{DependencyProperty.UnsetValue}' is not a valid value for property 'Background'

Я хочу использовать StaticResource для кистей везде в моем приложении.

1 Ответ

1 голос
/ 25 марта 2019

Если вы хотите использовать StaticResource в вашем ResourceDictionary, вам необходимо объединить ResourceDictionary Brushes.xaml с ResourceDictionary, где вы определяете стиль границы, как вы это сделали с Colors.xaml в Brushes.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <!-- "Include" Brushes -->
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Brushes.xaml" />
    </ResourceDictionary.MergedDictionaries>

    <Style x:Key="BorderContainer" TargetType="{x:Type Border}">
        <Setter Property="Background" Value="{StaticResource Color}" />
    </Style>
</ResourceDictionary>

Для получения дополнительной информации о разнице между Static- и DynamicResource см. этот ответ .

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