"cannot resolve symbol" 在 ResourceDictionary XAML 中(待合并)
"cannot resolve symbol" in ResourcesDictionary XAML (to be merged)
我有一个文件GraphView.XAML。我已将 Resources 部分分成两个 ResourceDictionary 文件(Vertices.xaml 和 Edges.xaml) 我合并如下:
GraphView.XAML
<Window x:Class="graph_app.GraphView" ... >
<Grid>
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Design/Vertices.xaml"/>
<ResourceDictionary Source="Design/Edges.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Grid.Resources>
...
<\Grid>
如果不拆分代码有效,但如果拆分我在 Vertices.xaml 中收到错误,告诉我方法 ChangeVertexColor_OnClick无法解析:
Vertices.XAML
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:graph_app">
<Style TargetType="{x:Type controls:VertexControl}">
<EventSetter Event="MouseDoubleClick" Handler="ChangeVertexColor_OnClick"/>
^^^cannot resolve symbol^^^^
</Style>
</ResourceDictionary>
我再说一遍,如果放在一个 XAML 中,代码就可以工作。此外, ChangeVertexColor_OnClick 方法是在 GrapView.xaml.cs 中实现的,所以它应该被识别,但是在拆分之后不知何故 Vertices.xaml 正在失去对 x:Class 的跟踪(我想它忽略了它的存在,因为它是一个单独的文件)。
如何从分离的 ResourcesDictionary 文件访问 ChangeVertexColor_OnClick?
谢谢
这里没有发生任何奇怪的事情:) - 它不应该工作,因为这是它的设计方式。我可以看到 2 种可能的解决方案:
- 为您的资源字典添加代码隐藏文件,并将您的
ChangeVertexColor_OnClick
方法放在那里 read more here
- 不要在样式中设置 MouseDoubleClick,而是直接在
controls:VertexControl
上(这样,恢复您的拆分更改)
我有一个文件GraphView.XAML。我已将 Resources 部分分成两个 ResourceDictionary 文件(Vertices.xaml 和 Edges.xaml) 我合并如下:
GraphView.XAML
<Window x:Class="graph_app.GraphView" ... >
<Grid>
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Design/Vertices.xaml"/>
<ResourceDictionary Source="Design/Edges.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Grid.Resources>
...
<\Grid>
如果不拆分代码有效,但如果拆分我在 Vertices.xaml 中收到错误,告诉我方法 ChangeVertexColor_OnClick无法解析:
Vertices.XAML
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:graph_app">
<Style TargetType="{x:Type controls:VertexControl}">
<EventSetter Event="MouseDoubleClick" Handler="ChangeVertexColor_OnClick"/>
^^^cannot resolve symbol^^^^
</Style>
</ResourceDictionary>
我再说一遍,如果放在一个 XAML 中,代码就可以工作。此外, ChangeVertexColor_OnClick 方法是在 GrapView.xaml.cs 中实现的,所以它应该被识别,但是在拆分之后不知何故 Vertices.xaml 正在失去对 x:Class 的跟踪(我想它忽略了它的存在,因为它是一个单独的文件)。
如何从分离的 ResourcesDictionary 文件访问 ChangeVertexColor_OnClick?
谢谢
这里没有发生任何奇怪的事情:) - 它不应该工作,因为这是它的设计方式。我可以看到 2 种可能的解决方案:
- 为您的资源字典添加代码隐藏文件,并将您的
ChangeVertexColor_OnClick
方法放在那里 read more here - 不要在样式中设置 MouseDoubleClick,而是直接在
controls:VertexControl
上(这样,恢复您的拆分更改)