Директива 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.

См. также