"не удается разрешить символ" в ResourcesDictionary XAML (подлежит объединению)

У меня есть один файл GraphView.XAML. Я разделил раздел Ресурсы на два файла 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>

Если не split, код работает, но если split, я получаю сообщение об ошибке в 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: (я полагаю, он игнорирует свое существование, поскольку это отдельный файл).

Как я могу получить доступ к ChangeVertexColor_OnClick из отдельного файла ResourcesDictionary?

Спасибо

1 ответ

Решение

Ничего странного здесь не происходит:) - это просто не должно работать, потому что так оно и задумано. Я вижу 2 возможных решения:

  1. Добавьте файл codebehind для вашего словаря ресурсов и поместите ChangeVertexColor_OnClick метод там читайте больше здесь
  2. Не устанавливайте MouseDoubleClick в стиле, но непосредственно на controls:VertexControl (так что, отмените разделение)
Другие вопросы по тегам