Директива x:TypeArguments
Передает аргументы типа, ограничивающие универсальный конструктор универсального типа.
Использование атрибута XAML
<object x:TypeArguments="typeString" .../>
Значения XAML
Стоимость | Description |
---|---|
object |
Объявление элемента объекта типа XAML, поддерживаемого универсальным типом СРЕДЫ CLR. Если object относится к типу XAML, который не относится к пространству имен XAML по умолчанию, object требуется префикс, чтобы указать пространство имен XAML, где object существует. |
typeString |
Строка, объявляющая одно или несколько имен типов XAML в виде строк, которая предоставляет аргументы типа для универсального типа CLR. Дополнительные заметки синтаксиса см. в примечаниях к дополнительным синтаксисам. |
Замечания
В большинстве случаев типы XAML, используемые в качестве элемента информации в typeString
строке, префиксируются. Типичные типы универсальных ограничений CLR (например, Int32 и String) приходят из библиотек базовых классов CLR. Эти библиотеки не сопоставляются с типичными пространствами имен XAML по умолчанию для платформы и поэтому требуют сопоставления префиксов для использования XAML.
Можно указать несколько имен типов XAML с помощью разделителя-запятой.
Если универсальные ограничения сами используют универсальные типы, аргументы типа вложенных ограничений могут содержаться скобками ().
Обратите внимание, что это определение x:TypeArguments
зависит от служб XAML .NET и использует резервное копирование среды CLR. Определение уровня языка можно найти в разделе 7.3.11 [MS-XAML].
Примеры использования
В этих примерах предполагается, что объявляются следующие определения пространства имен XAML:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"
List<String>
<scg:List x:TypeArguments="sys:String" ...>
создает экземпляр нового List<T> с аргументом String типа.
Строка словаря<, строка>
<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...>
создает экземпляр нового Dictionary<TKey,TValue> с двумя String аргументами типа.
Строка Очереди<KeyValuePair,String<>>
<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...>
создает экземпляр нового Queue<T> объекта, имеющего ограничение KeyValuePair<TKey,TValue> с аргументами String типа внутреннего ограничения и String.
Использование XAML 2006 и WPF Generic XAML
Для использования XAML 2006 и XAML, используемых для приложений WPF, существуют следующие ограничения для x:TypeArguments
использования универсальных типов из XAML в целом:
Только корневой элемент XAML-файла может поддерживать универсальное использование XAML, ссылающееся на универсальный тип.
Корневой элемент должен сопоставляться с универсальным типом по крайней мере с одним аргументом типа. Например, PageFunction<T>. Функции страницы — это основной сценарий поддержки универсального использования XAML в WPF.
Элемент объекта XAML корневого элемента для универсального элемента также должен объявлять частичный класс с помощью
x:Class
. Это верно, даже если определяется действие сборки WPF.x:TypeArguments
не может ссылаться на вложенные универсальные ограничения.
XAML 2009 или XAML 2006 без зависимостей WPF 3.0 или WPF 3.5
В службах .NET XAML для XAML 2006 или XAML 2009 ограничения, связанные с WPF для универсального использования XAML, ослабляются. Вы можете создать экземпляр универсального элемента объекта в любой позиции в разметке XAML, которую поддерживает система резервного типа и объектная модель.
При использовании XAML 2009 вместо сопоставления базовых типов СРЕДЫ CLR для получения типов XAML для примитивов общего языка можно использовать встроенные типы для примитивов языка COMMON XAML в качестве информационных элементов.typeString
Например, можно объявить следующее (сопоставления префиксов не отображаются, но x — это пространство имен XAML языка XAML для XAML 2009):
<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>
В WPF и при выборе платформа .NET Framework 4 или .NET Core 3.0 (или более поздней версии) можно использовать функции XAML 2009 вместе с x:TypeArguments
ней только для свободного XAML (XAML, который не компилируется разметкой). Скомпилированный с разметкой XAML и форма BAML кода XAML в настоящее время не поддерживают ключевые слова и компоненты XAML 2009. Если вам нужно скомпилировать XAML, необходимо работать в соответствии с ограничениями, отмеченными в разделе "Использование XAML 2006 и WPF Generic XAML Usages ". BAML поддерживается только в платформа .NET Framework.
См. также
.NET Desktop feedback