Caliburn 2.0.0 и WP 8.1: ActionMessage не нашел целевой метод

У меня проблема с caliburn ActionMessage и Windows Phone 8.1. Вот мой код:

       <ListBox x:Name="Categories" Grid.Row="1" ItemContainerStyle="{StaticResource TileListBoxItemStyle}">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Button>
                    <i:Interaction.Behaviors>
                        <core:EventTriggerBehavior EventName="Click">
                            <micro:ActionMessage MethodName="GoToPage">
                                <micro:Parameter Value="{Binding Path=PageId}" />
                            </micro:ActionMessage>
                        </core:EventTriggerBehavior>
                    </i:Interaction.Behaviors>
                    <TextBlock Text="{Binding Path=PageDescription}" TextWrapping="Wrap"
                           HorizontalAlignment="Center" VerticalAlignment="Center" />
                </Button>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

В моем приложении кнопки будут созданы во время выполнения. Но когда я нажимаю кнопку, у меня есть эта ошибка:

System.Exception: не найдена цель для метода GoToPage. в Caliburn.Micro.ActionMessage.Invoke(Object eventArgs) в Caliburn.Micro.TriggerAction`1.Execute(отправитель объекта, параметр объекта) в Microsoft.Xaml.Interactivity.Interaction.ExecuteActions(отправитель объекта, действия ActionCollection, параметр объекта) в Microsoft.Xaml.Interactions.Core.EventTriggerBehavior.OnEvent (отправитель объекта, объект eventArgs)

Почему? С WP 8.0 этот код работает.

Спасибо!


person Max    schedule 28.07.2014    source источник


Ответы (2)


Вы должны указать AssociatedObject в ActionMessage. В вашем случае это кнопка.

Подробности описаны в следующей проблеме: https://github.com/Caliburn-Micro/Caliburn.Micro/issues/24

person tibel    schedule 29.07.2014
comment
Привет тибель, спасибо за ответ. С AssociatedObject в ActionMessage у меня есть следующие ошибки при сборке: 1- Член AssociatedObject не распознан или недоступен. и 2- Свойство «AssociatedObject» не было найдено в типе «ActionMessage». - person Max; 30.07.2014
comment
Привет тибель! Ваши решения работают! Ошибка, описанная в моем предыдущем комментарии, зависит от визуальной студии, я думаю, теперь весь мой код собирается без проблем. Спасибо! - person Max; 05.08.2014

Другой причиной этого исключения может быть.

Исключение, описанное @Max, также возникает, если вы не зарегистрировали свою модель представления:

_container = new WinRTContainer();
_container.RegisterWinRTServices();
_container.PerRequest<TestViewModel>(); // <-- without that line I got the same error

PS: Действительно для Caliburn.Micro v.2.0.1

person feeeper    schedule 11.05.2015