Ошибка «Значение не может быть пустым» в App.xaml с ResourceDictionary (WPF) - PullRequest
0 голосов
/ 04 марта 2019

Используя .NET Framework 4.6.1, и я использую комплект пользовательского интерфейса , который я установил через NuGet, и на него правильно ссылаются в проекте.

Приложение.xaml

<Application x:Class="ExampleApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:adonisUi="clr-namespace:AdonisUI;assembly=AdonisUI"
             xmlns:local="clr-namespace:ExampleApp"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="{x:Static adonisUi:ResourceLocator.DarkColorScheme}" />
                <ResourceDictionary Source="{x:Static adonisUi:ResourceLocator.ClassicTheme}" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

MainWindow.xaml

<Window x:Class="ExampleApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ExampleApp"
        mc:Ignorable="d"
        Title="MainWindow"
        Height="450"
        Width="800">
    <Window.Style>
        <Style TargetType="Window"
               BasedOn="{StaticResource {x:Type Window}}" />
    </Window.Style>
    <Grid>
        <StackPanel Margin="10">
            <Button Content="Click Me"
                    HorizontalAlignment="Center" />
        </StackPanel>
    </Grid>
</Window>

Проблемы:

<ResourceDictionary Source="{x:Static adonisUi:ResourceLocator.DarkColorScheme}" />
<ResourceDictionary Source="{x:Static adonisUi:ResourceLocator.ClassicTheme}" />

Обастроки в App.xaml получают следующую ошибку:

Value cannot be null. Parameter name: item.

Я пробовал несколько свежих проектов, сборка и перестройка, и я продолжаю получать эту ошибку.Я могу построить проект и вижу, что стили из набора пользовательского интерфейса правильно применены в MainWindow, даже если ошибка все еще присутствует.

Однако стили не отображаются в окне дизайнера.не уверен, связано ли это с ошибкой, которую я получаю или нет.

Есть идеи, что может вызвать это?

1 Ответ

0 голосов
/ 04 марта 2019

Я только что попробовал, и он делает то же самое со мной ... используя Visual Studio Enterprise 2017 15.9.7

Если вы посмотрите на AdonisUI.ResourceLocator в декомпиляторе (я использовал JustDecompile от Telerik), выВы увидите определения:

public static Uri ClassicTheme
{
    get
    {
        return new Uri("pack://application:,,,/AdonisUI.ClassicTheme;component/Resources.xaml", UriKind.Absolute);
    }
}

public static Uri DarkColorScheme
{
    get
    {
        return new Uri("pack://application:,,,/AdonisUI;component/ColorSchemes/Dark.xaml", UriKind.Absolute);
    }
}

public static Uri LightColorScheme
{
    get
    {
        return new Uri("pack://application:,,,/AdonisUI;component/ColorSchemes/Light.xaml", UriKind.Absolute);
    }
}

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

<ResourceDictionary Source="pack://application:,,,/AdonisUI.ClassicTheme;component/Resources.xaml" />
<ResourceDictionary Source="pack://application:,,,/AdonisUI;component/ColorSchemes/Dark.xaml" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...