Проблема с x: TypeArguments и универсальным классом List в XAML - PullRequest
8 голосов
/ 19 мая 2011

Я создал следующую разметку для свободного файла XAML.

<StackPanel 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:sys="clr-namespace:System;assembly=mscorlib"
  xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib">
    <scg:List x:TypeArguments="sys:String">
        HelloWorld
    </scg:List>
</StackPanel>

Но я получаю эту ошибку, когда запускаю свободный XAML в IE:

Тег 'Список' не существует в пространстве имен XML 'clr-namespace: System.Collections.Generic; сборка = mscorlib».Строка '7' Позиция 2 '.

Как вы знаете, дженерики в XAML являются функцией XAML 2009 и могут работать по большей части только в свободных файлах XAML.Но приведенный выше код не работает.

Любая подсказка, почему эта ошибка произошла и как исправить проблему?Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 23 мая 2011

Проблема была решена.Мне нужно было включить следующее отображение пространства имен в разметку, чтобы разрешить использование обобщенных элементов.

xmlns: v4 = "http://schemas.microsoft.com/netfx/2009/xaml/presentation"

Теперь все работает нормально.

3 голосов
/ 19 мая 2011

Я только что проверил ваш пример в Internet Explorer 9. IE9 использует PresentationHost.exe для рендеринга контента и в моей системе (Windows 7 SP1 x64), и, изучая, какие сборки действительно загружены, я подтвердил, что использует платформу v3.0, которая не поддерживает XAML 2009.

Документация описывает, что для XBAP он выбирает, какую версию платформы загрузить, и поэтому он явно способен использовать платформу v4.0, которая поддерживает XAML 2009 для свободного XAML. Однако в документации, к сожалению, не сказано, какую версию фреймворка он выберет для свободного XAML, а не для XBAP.

Опытным путем, по крайней мере, с вашим образцом, я могу подтвердить, что PresentationHost.exe выбирает фреймворк v3.0. Я не могу найти способ переопределить этот выбор, например, как-то комментируя XAML.

...