获取"无法将类型EventTriggerBehavior的实例添加到集合BehaviorCollection"以使可单击的TextBlock

Not*_*nie 5 xaml behavior xamlparseexception windows-runtime winrt-xaml

我的应用程序有一系列按钮硬编码为导航菜单,但我想将其升级为更多数据驱动的东西.

    <Button Content="MyPage">
        <i:Interaction.Behaviors>
            <core:EventTriggerBehavior EventName="Click">
                <core:NavigateToPageAction TargetPage="Namespace.MyPage"/>
            </core:EventTriggerBehavior>
        </i:Interaction.Behaviors>
    </Button>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将此行为放在不同的XAML元素(特别是作为数据模板的一部分的TextBlock)时,我收到以下错误.

NavMockUp.Windows.exe中出现"Windows.UI.Xaml.Markup.XamlParseException"类型的异常,但未在用户代码中处理

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>
Run Code Online (Sandbox Code Playgroud)

Not*_*nie 7

确保您了解EventTriggerBehaviors的工作原理

该错误可能有点无用,但这是因为TextBlock元素没有一个名为"Click"的事件要附加到.杰里尼克松有一篇关于行为好文章

要解决此问题,只需使用Tapped事件替换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>
Run Code Online (Sandbox Code Playgroud)