4

В моем приложении было множество кнопок, жестко закодированных как меню навигации, но я хотел обновить их до чего-то большего, чем управляемый данными.Получение «Невозможно добавить экземпляр типа EventTriggerBehavior в коллекцию BehaviorCollection», чтобы сделать clickable TextBlock

<Button Content="MyPage"> 
     <i:Interaction.Behaviors> 
      <core:EventTriggerBehavior EventName="Click"> 
       <core:NavigateToPageAction TargetPage="Namespace.MyPage"/> 
      </core:EventTriggerBehavior> 
     </i:Interaction.Behaviors> 
    </Button> 

Но когда я попытался поставить это поведение другого XAML элемента (в частности, в TextBlock в качестве части шаблона данных), я получил следующее сообщение об ошибке.

Исключение типа «Windows.UI.Xaml.Markup.XamlParseException» произошло в NavMockUp.Windows.exe, но не был обработан в пользовательском коде

WinRT информация: Невозможно добавить экземпляр типа ' Microsoft.Xaml.Interactions.Core.EventTriggerBehavior»к коллекции типа '' Microsoft.Xaml.Interactivity.BehaviorCollection

<TextBlock Text="Click for Page"> 
     <i:Interaction.Behaviors> 
      <core:EventTriggerBehavior EventName="Click"> 
       <core:NavigateToPageAction TargetPage="Namespace.MyPage"/> 
      </core:EventTriggerBehavior> 
     </i:Interaction.Behaviors> 
    </TextBlock> 

ответ

6

Убедитесь, что вы понимаете, как работает EventTriggerBehaviors

Ошибка может быть несколько бесполезной, но это вызвано тем фактом, что элемент TextBlock не имеет события, называемого «Click» для присоединения. Джерри Никсон имеет good article on behaviors

Чтобы исправить это просто заменить Click событие с резьбовым событием, так как TextBlock делает есть один из них.

<TextBlock Text="Click for Page"> 
     <i:Interaction.Behaviors> 
      <core:EventTriggerBehavior EventName="Tapped"> 
       <core:NavigateToPageAction TargetPage="Namespace.MyPage"/> 
      </core:EventTriggerBehavior> 
     </i:Interaction.Behaviors> 
    </TextBlock>