xaml 交互触发器解析错误 wp8.1(silverlight)

xaml parse error on interaction triggers wp8.1(silverlight)

我有一个适用于 WP8.0 的有效解决方案。但我需要升级才能访问 WNS。我已成功将 WNS 添加到主菜单工作中的升级解决方案。但是在升级到 wp8.1(silverlight) 之后,我遇到了一些奇怪的错误,这只发生在 运行 时间。例如,它发生在以下用户控件中:

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"
xmlns:View="clr-namespace:ShieldGenerator.View"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
x:Class="ShieldGenerator.View.MoveableShieldGear"
mc:Ignorable="d"
Canvas.Left="{Binding Gear.x}" Canvas.Top="{Binding Gear.y}" Canvas.ZIndex="{Binding Gear.z}" >

<Path Data="{Binding Gear.Path}" Fill="{Binding Gear.Color}" Stretch="Fill" UseLayoutRounding="False" Height="{Binding Gear.Height}" Width="{Binding Gear.Width}" Opacity="{Binding Gear.Opacity}">
    <Path.RenderTransform>
        <TransformGroup>
            <ScaleTransform ScaleX="{Binding Gear.Scale}" ScaleY="{Binding Gear.Scale}" CenterX="{Binding Gear.CenterX}" CenterY="{Binding Gear.CenterY}"/>
            <RotateTransform Angle="{Binding Gear.Rotate}" CenterX="{Binding Gear.CenterX}" CenterY="{Binding Gear.CenterY}" />
            <SkewTransform AngleX="{Binding Gear.SkewX}" AngleY="{Binding Gear.SkewY}" CenterX="{Binding Gear.CenterX}" CenterY="{Binding Gear.CenterY}" />
        </TransformGroup>
    </Path.RenderTransform>

    <i:Interaction.Triggers>

        <i:EventTrigger EventName="ManipulationStarted">
            <cmd:EventToCommand Command="{Binding MouseDownGearCommand}" PassEventArgsToCommand="True"/>
        </i:EventTrigger>

        <i:EventTrigger  EventName="ManipulationDelta">
            <cmd:EventToCommand Command="{Binding MouseGearMoveCommand, Mode=OneWay}" PassEventArgsToCommand="True"/>
        </i:EventTrigger>

        <i:EventTrigger  EventName="ManipulationCompleted">
            <cmd:EventToCommand Command="{Binding MouseUpGearCommand}" PassEventArgsToCommand="True"/>
        </i:EventTrigger>

        <i:EventTrigger  EventName="DoubleTap">
            <cmd:EventToCommand Command="{Binding DoubleTapCommand}" PassEventArgsToCommand="True"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>

</Path>

</UserControl>

其中事件绑定到我的 VM,VM 中的命令定义为 RelayCommand。如前所述,这是一个没有错误的有效解决方案。我更新了,编译时仍然没有错误。 我没有视图背后的代码,但错误发生在下面标有 ERROR 的行中(在 *.g.cs 文件中)

namespace ShieldGenerator.View {


public partial class MoveableShieldGear : System.Windows.Controls.UserControl {

    private bool _contentLoaded;

    /// <summary>
    /// InitializeComponent
    /// </summary>
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public void InitializeComponent() {
        if (_contentLoaded) {
            return;
        }
        _contentLoaded = true;
        System.Windows.Application.LoadComponent(this, new System.Uri("/ShieldGenerator;component/View/MoveableShieldGear.xaml", System.UriKind.Relative)); //ERROR
    }
}
}

错误指的是上面xaml代码中<i:Interaction.Triggers>中的那一行。

我已经尝试卸载和安装多个软件包,但均未成功。 我尝试四处搜索,找到了包含 Mode=Oneway 的想法,以及 xaml 解析器中的一些陈述错误。我完全不知所措。

希望有人能帮忙!

错误

在我使用 i:interaction 的任何地方都显示此错误。我一直在寻找一种方法来找到 System.Windows.Interactivity 的 wp8.1 版本,但是没能找到。因此,我确保更新了 MVVMLight 工具:

基于评论的信息

新的差异app.config 是新加入的。

新的差异WMAppManifest.xml NotificationService="WNS" 因为我已经设置好并且可以使用

<Capabilities>
  <Capability Name="ID_CAP_NETWORKING" />
  <Capability Name="ID_CAP_MEDIALIB_AUDIO" />
  <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" /> 
  <Capability Name="ID_CAP_MEDIALIB_PHOTO" />
</Capabilities>

<Capabilities>
  <Capability Name="ID_CAP_NETWORKING" />
  <Capability Name="ID_CAP_MEDIALIB_AUDIO" />
  <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" />
  <Capability Name="ID_CAP_SENSORS" />
  <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
  <Capability Name="ID_CAP_MEDIALIB_PHOTO" />
  <Capability Name="ID_CAP_PUSH_NOTIFICATION" />
  <Capability Name="ID_CAP_IDENTITY_USER" />
 </Capabilities>

我删除了不再使用的功能。并为 WP8.1

添加了新的 Package.appxmanifest
<Capabilities>
<Capability Name="internetClientServer" />
<Capability Name="musicLibrary" />
<Capability Name="picturesLibrary" />

根据另一个问题,AGHost.exe 也有问题,但我没有尝试删除它,因为我认为下面是强制性的。

<Applications>
<Application Id="xd82c080dy903dy47f4yba02y5a36d745c72bx" Executable="AGHost.exe" EntryPoint="StartUp/FirstPage.xaml">
  <m3:VisualElements DisplayName="XXXXX" Square150x150Logo="Assets\SquareTile150x150.png" Square44x44Logo="Assets\Logo.png" Description="XXXX" ForegroundText="light" BackgroundColor="#464646" ToastCapable="true">
    <m3:DefaultTile Square71x71Logo="Assets\SquareTile71x71.png">
    </m3:DefaultTile>
    <m3:SplashScreen Image="Assets\Splashscreen.png" />
  </m3:VisualElements>
</Application>


</Applications>
<Capabilities>
    <Capability Name="internetClientServer" />
    <Capability Name="musicLibrary" />
    <Capability Name="picturesLibrary" />
</Capabilities>
<Extensions>
  <Extension Category="windows.activatableClass.inProcessServer">
    <InProcessServer>
      <Path>AgHostSvcs.dll</Path>
      <ActivatableClass ActivatableClassId="AgHost.BackgroundTask" ThreadingModel="both" />
    </InProcessServer>
  </Extension>
</Extensions>

在此文件中找不到任何其他问题。 AssemblyInfo.csAppManifest.xml 是一样的。查看参考文件夹,参考资料似乎没问题,并针对 wp8.1 进行了更新(那些可以)

额外

如果我将 xaml 代码(即交互路径)复制到另一个有效的页面。然后它失败并出现相同的错误,在 xaml 解析没有代码段的页面时。

新更新 似乎在我升级后,解决方案和项目中的某些东西被损坏了。我发现的以下内容是我可以启动代码并在新项目中工作。 如果我 运行 并部署项目,代码就可以工作。

如果我在另一方面使用同一个项目,在部署时工作,现在从另一个项目导航到它 "/BC_Creator;component/MainPage.xaml" 然后再次出现上述错误。我现在唯一的想法是尝试创建全新的项目并将代码复制粘贴到新文件中。由于导入它们似乎仍然不起作用。

WTF 发生了:S

我仍然愿意回答。

但我目前的结果是,问题实际上出在 MVVMLight 包上。

在升级解决方案、卸载并使用 packmanager 控制台重新安装之后,我已经删除了所有错误。但是解决方案不起作用。这已经结束,我不得不创建一个新的解决方案并导入旧项目。然而,一些问题仍然存在,导致复制粘贴到新文件中,并创建了相同的名称。突然它起作用了,太奇怪了:/

旧的解决方案仍然不起作用,甚至测试导入旧文件(不是项目 JUST 代码文件)也不起作用,只能重新创建和复制。

这真的很奇怪,所以仍然开放解决方案,因为这会花费很长时间!