2014-07-28 1 views
1

У меня проблема с caliburn ActionMessage и Windows Phone 8.1. Здесь мой код:Caliburn 2.0.0 и WP 8.1: ActionMessage не найден целевой метод

 <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. at Caliburn.Micro.ActionMessage.Invoke (Object eventArgs) at Caliburn.Micro.TriggerAction`1.Execute (объект-отправитель, параметр объекта) в Microsoft.Xaml.Interactivity.Interaction.ExecuteActions (объект-отправитель, действия ActionCollection, Object параметр) в Microsoft.Xaml.Interactions.Core.EventTriggerBehavior.OnEvent (объект отправителя, объект eventArgs)

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

Спасибо!

ответ

1

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

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

+0

Привет tibel, спасибо за ответ. С AssociatedObject на ActionMessage у меня есть такие ошибки при сборке: 1- «Член« AssociatedObject »не распознается или не доступен». и «Свойство« AssociatedObject »не найдено в типе« ActionMessage ». – Max

+0

Hi tibel! Ваши решения работают! Ошибка, описанная в моем предыдущем комментарии, зависит от визуальной студии, я думаю, теперь вся моя сборка кода без проблем. Благодаря! – Max

0

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

Exception, что @Max описал, также встречается, если вы не зарегистрировали ViewModel:

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

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

Смежные вопросы