我在我的应用程序中使用这个(优秀的)流程图设计器,但我想将它用作UserControl
.
要将其转换Application
为UserControl
我更改了应用程序唯一的窗口:
<Window x:Class="DiagramDesigner.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:DiagramDesigner"
xmlns:c="clr-namespace:DiagramDesigner.Controls"
WindowStartupLocation="CenterScreen"
Title="Diagram Designer"
Height="850" Width="1000">
<Window.Resources>
<ContextMenu x:Key="DesignerCanvasContextMenu">
...
</ContextMenu>
</Window.Resources>
...
</Window>
进入用户控件:
<UserControl x:Class="DiagramDesigner.DiagramDesignerWPFControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:DiagramDesigner"
xmlns:c="clr-namespace:DiagramDesigner.Controls"
Height="850" Width="1000">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
...
</ResourceDictionary.MergedDictionaries>
<ContextMenu x:Key="DesignerCanvasContextMenu">
...
</ContextMenu>
</ResourceDictionary>
</UserControl.Resources>
...
</UserControl>
我ResourceDicctionary
从内容中取出App.xaml
并将其添加到控件中。然后我删除了该App.xaml
文件,因为它不能用于Class Library
编译。
我的问题是:
当我将新添加User Control
到另一个项目中的 WPF 表单时,我可以运行新应用程序,我可以添加图表组件并移动它们,但是当我加入/链接时,会引发以下异常:
找不到名为“{SolidBorderBrush}”的资源。资源名称区分大小写。
我在我的资源或它们的位置做错了什么User Control
?
接受答案后的版本:
出现的异常还指向调用了“{SolidBorderBrush}”的行。我最初没有把它放在这个问题中,因为它是一个电话而不是一个声明。这是链接异常的一段代码:
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Background" Value="{DynamicResource ToolbarSelectedBackgroundBrush}" />
<Setter TargetName="Border" Property="BorderBrush" Value="{DynamicResource SolidBorderBrush}" />
</Trigger>