0

アプリはXAMLを動的にロードします-XAMLはサーバーから取得できるため、コントロールをインスタンス化することはできません。

私はこれにXamlReader.Load()を使用しており、しばらく前から使用しています。

現在、奇妙な性質の問題が発生しています。トリガーへの参照を含むXAMLを逆シリアル化しようとすると、リーダーはxamlを解析できないという例外をスローします。

System.Windows.Markup.XamlParseExceptionが発生しましたメッセージ=不明なパーサーエラー:スキャナー2147500037。[行:5位置:10]
LineNumber = 5 LinePosition = 10 StackTrace:at MS.Internal.XcpImports.CreateFromXaml(String xamlString、Boolean createNamescope、Boolean requireDefaultNamespace 、ブールallowEventHandlers、ブールexpandTemplatesDuringParse、ブールtrimDeclaredEncoding)at System.Windows.Markup.XamlReader.Load(String xaml)at LoadXamlFail.MainPage.myTrigger_Clicked(Object sender、RoutedEventArgs e)

これで、Blendトリガーへの参照を含むXAMLを逆シリアル化しようとすると、すべてが正常に機能します。ブレンドトリガーを含むXAMLは次のとおりです。

<Grid x:Name="LayoutRoot">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Tap">
            <eim:PlaySoundAction/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Grid>

そして、これが私のトリガーを含むXAMLです:

<Grid x:Name="LayoutRoot">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Tap">
            <local:MyTrigger/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Grid>

私のトリガーは私がそれを作ることができるのと同じくらい単純です-それは本質的に何もしません:

public class MyTrigger  : TriggerAction<FrameworkElement>
{
    public MyTrigger()
    {
    }

    protected override void Invoke(object parameter)
    {
    }
}

XAMLをロードするコード(どちらの場合も同じコード-一方は機能し、もう一方は機能しません)は次のようになります。

using (var stream = App.GetResourceStream(new System.Uri("/LoadXamlFail;component/OtherTriggerControl.xaml", UriKind.Relative)).Stream)
using (var reader = new StreamReader(stream))
{
    var xaml = reader.ReadToEnd();
    xaml = FixXaml(xaml);
    XamlReader.Load(xaml);
}

最後に、XAMLをサポートするコントロールを削除してXAMLを読み込むと、問題なく機能します。

誰かがこれを引き起こしている可能性があるもの、またはそれを回避する方法を知っていますか?

(誰かが実際の例を見たい場合は、ここからコードをダウンロードしてください)

4

1 に答える 1

0

さて、それを理解しました(そしてそれを理解することによって、私は別のフォーラムの誰かが私に答えを与えたことを意味します)。

基本的に、XamlReaderを使用する場合、アセンブリ内にある名前空間をassembly=要素で装飾する必要がない通常のXAMLの動作に依存することはできません。

http://socialeboladev.wordpress.com/2012/09/30/xamlreader-and-xamlparseexception-occurred-messageunknown-parser-error-scanner-2147500037/

于 2012-09-30T08:41:25.143 に答える