Я создал WPF UserControl
и хочу сослаться на него в другом проекте. Но даже несмотря на то, что UserControl
можно использовать в своей собственной сборке, при ссылке в другом проекте возникает проблема StaticResource
not found.
Мой UserControl
выглядит так:
<UserControl x:Class="DiagramDesigner.VacSymGrmV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DiagramDesigner"
xmlns:s="clr-namespace:DiagramDesigner"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<local:DesignerCanvas Focusable="true" x:Name="vacgrm"
Background="{StaticResource WindowBackgroundBrush}"
Margin="10" FocusVisualStyle="{x:Null}"
ContextMenu="{StaticResource DesignerItemContextMenu}"/>
</Grid>
</UserControl>
Проблемный момент: {Static Resource WindowBackgroundBrush}
, который является ресурсом, определенным в файле XAML:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="DisabledForegroundBrush" Color="#888" />
<SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#EEE" />
<SolidColorBrush x:Key="WindowBackgroundBrush" Color="#000" />
<SolidColorBrush x:Key="SelectedBackgroundBrush" Color="#DDD" />
</ResourceDictionary>
Эта сборка является EXE, и в окне дизайна UserControl
я вижу, что она правильно отображается, компилируется и запускается.
Но когда я хочу использовать UserControl
в другом приложении WPF, как в следующем коде, это приложение выдает исключение при запуске, утверждая, что WindowBackgroundBrush
не найдено:
<Window x:Class="XVacSysComp.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:vac="clr-namespace:DiagramDesigner;assembly=VacSymDgm"
xmlns:local="clr-namespace:XVacSysComp;assembly=XVacSysComp"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<vac:VacSymGrmV>
</vac:VacSymGrmV>
</Grid>
</Window>
VacSymGrmV
это UserControl
и неудивительно, что UserControl
неправильно отображается в окне дизайна.
Исключение говорит:
Исключение: «WindowBackgroundBrush» не найден, и обратите внимание на верхний/нижний регистр...
Это какая-то проблема, связанная с расположением статического ресурса при его использовании в другой сборке?