2015-10-07 2 views
0

Я использую Caliburn Micro для приложения Windows Phone. У меня есть элемент управления гиперссылкой, для которого я хочу связать событие click с моей моделью просмотра. Ниже приведен пример кодаWindows Phone Caliburn Micro HyperLink click event

XAML, MyPage.xaml

<TextBlock> 
<Run>Got to</Run> 
<Hyperlink micro:Message.Attach="[Event Click] = [Action OpenAnotherPage]"> 
My Page</Hyperlink><Run Text="."></Run></TextBlock> 

ViewModel MyPageViewModel.cs

public void OpenAnotherPage() 
{ 
// some code 
} 

Когда я нажимаю на ссылку, я получаю исключение

системы . Исключение: целевой объект не найден для метода

В чем может быть проблема?

Update 1: Пробовал установка micro:Action.TargetWithoutContext="{Binding ElementName=MyPage, Path=DataContext}" на контроле гиперссылок, но это не сработало

ответ

0

Дайте TextBlock имя и использовать его в качестве ElementName, так как у вас есть гиперссылок вложенные в этот элемент управления. Тогда Update1 должен работать.

+0

Пробовал, но получил ту же ошибку –

0

Try следующий XAML (непроверенные):

<Hyperlink>My Page 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="Click"> 
       <ec:CallMethodAction TargetObject="{Binding}" MethodName="OpenAnotherPage" /> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
    </Hyperlink> 

Пространства имен являются следующие (вы должны ссылаться на эти 2 сборки, они от Microsoft и поставляется с MS Expression Blend)

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
xmlns:ec="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" 
Смежные вопросы