1

我有一个文件GraphView.XAML。我已将Resources部分拆分为两个ResourceDictionary文件(Vertices.xamlEdges.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无法解析:

顶点.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 ?

谢谢

4

1 回答 1

1

这里没有发生什么奇怪的事情:) - 它只是不应该工作,因为这是它的设计方式。我可以看到 2 种可能的解决方案:

  1. 为您的资源字典添加代码隐藏文件,并将您的ChangeVertexColor_OnClick方法放在那里阅读更多here
  2. 不要在样式中设置 MouseDoubleClick,而是直接设置controls:VertexControl(有点,还原您的拆分更改)
于 2018-03-23T14:33:07.593 回答