Xaml для конкретной платформы, который выдает ошибку для платформы UWP

#uwp #uno-platform

Вопрос:

У меня есть xaml для конкретной платформы, который выдает ошибку для платформы UWP.

 Unexpected 'NONE' in parse rule 'Element ::= . EmptyElement | ( StartElement ElementBody ).'.
 

Мой Xaml выглядит так:

 xmlns:wasm="http://uno.ui/wasm" 
xmlns:not_wasm="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
mc:Ignorable="d wasm not_wasm"
 

и

 <ItemsPanelTemplate>
    <not_wasm:ItemsWrapGrid Orientation="Horizontal"  MaximumRowsOrColumns="8"/>
    <wasm:WrapPanel/>
</ItemsPanelTemplate>
 

Вышеприведенные сборки без ошибок для wasm, но для UWP они завершаются с указанной выше ошибкой.
Есть какие-нибудь мысли о том, что вызывает это?

Ответ №1:

Проблема здесь в том, что ваша разметка содержит not_wasm пространство имен в списке игнорируемых. Так что Windows игнорирует это, а затем думает <ItemsPanelTemplate /> , что это пусто.

В общем случае, любое пространство имен, зависящее от платформы, которое имеет «http://schemas.microsoft.com/winfx/2006/xaml/presentation» не следует входить в список игнорируемых. Любое пространство имен формы, зависящее от платформы «http://uno.ui/xxxx» следует внести в список неблагонадежных.

Правильная разметка была бы:

 xmlns:wasm="http://uno.ui/wasm" 
xmlns:not_wasm="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
mc:Ignorable="d wasm"
 

и

 <ItemsPanelTemplate>
    <not_wasm:ItemsWrapGrid Orientation="Horizontal"  MaximumRowsOrColumns="8"/>
    <wasm:WrapPanel/>
</ItemsPanelTemplate>