我在我的应用程序中使用this (excellent) flowchart diagram designer,但我想将其用作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>
答案 0 :(得分:2)
我在这里猜测,因为你的问题实际上没有显示任何似乎导致问题的代码,但你可能需要使用DynamicResource
。
{DynamicResource SolidBorderBrush}
您只能在非常特殊的情况下使用StaticResource。在大多数情况下,您可以获得很大的性能提升,但很容易在无法使用的情况下结束(可能会发生这种情况)。