Я пытаюсь сослаться на ResourceDictionary App.xaml из отдельного окна WPF.Я хочу использовать ресурсы оттуда в разных окнах, и это похоже на рекомендуемый способ сделать это.К сожалению, я не могу эффективно ссылаться на App.xaml из другого окна.Вот мой App.xaml:
<Application x:Class="View.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ViewModel="clr-namespace:ViewModel;assembly=ViewModel"
xmlns:local="clr-namespace:View"
StartupUri="ClockView.xaml">
<Application.Resources>
<ResourceDictionary>
<local:PriorityToIconConverter x:Key="PriorityToIconConverter" />
</ResourceDictionary>
</Application.Resources>
Примечания: я не использую MainWindow, поэтому я заменил URI запуска на форму, которая всегда появляется.Я заметил, что в некоторых других ответах, местоположение MainWindow иногда является проблемой.В моем случае я не видел никакой разницы между использованием ClockView или MainWindow.ClockView и MainWindow существуют в корневом пространстве имен, MainWindow просто никогда не загружается.У меня также есть больше ресурсов, но я удалил их ради краткости.
Вот упрощенный пример кода, где я пытаюсь сослаться на ResrouceDictionary из App.xaml:
<local:AssistantWindow
x:Class="View.AutomatorView"
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:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:properties="clr-namespace:View.Properties"
xmlns:local="clr-namespace:View"
mc:Ignorable="d"
Title="Tool"
x:Name="Tool"
Background="Transparent"
Height="600"
Width="450"
Topmost="{Binding Source={x:Static properties:Settings.Default}, Path=ToolAlwaysOnTop}"
MinHeight="515"
MinWidth="150">
<Window.Resources>
<ResourceDictionary Source="App.xaml" />
</Window.Resources>
Опять же, это упрощенно, чтобы быть кратким,Когда я пытаюсь загрузить эту форму, я получаю исключение:
System.Windows.Markup.XamlParseException: ''Set property 'System.Windows.ResourceDictionary.Source' threw an exception.' Line number '21' and line position '10'.'
Inner Exception
IOException: Cannot locate resource 'tool/app.xaml'.
Представление «Инструмент» находится в папке, которая также называется «Инструмент».Тем не менее, xaml и код позади не ссылаются на это пространство имен, я просто использую папку для организации своих классов.Похоже, что он ищет App.xaml в папке, в которой находится представление. App.xaml находится в корневом пространстве имен (View).Я попытался изменить источник в xaml для инструмента, чтобы: - View.App.xaml - Просмотр: App.xaml - Просмотр / App.xaml
Как я могу заставить эту ссылку работать, чтобы я могделиться ресурсами по всему моему приложению?Спасибо.