"не удается разрешить символ" в 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 возможных решения:
- Добавьте файл codebehind для вашего словаря ресурсов и поместите
ChangeVertexColor_OnClick
метод там читайте больше здесь - Не устанавливайте MouseDoubleClick в стиле, но непосредственно на
controls:VertexControl
(так что, отмените разделение)