x: значение в xaml - PullRequest
       1

x: значение в xaml

49 голосов
/ 01 января 2011

Я вижу много утверждений, таких как

<TextBox x:Name="txtInput" />

или как

<BooleanToVisibilityConverter x:Key="boolToVis" />

Почему нужен x: и что он мне дает.

<DockPanel.Resources>
  <c:MyData x:Key="myDataSource"/>
</DockPanel.Resources>

И здесь у нас также есть c:

Спасибо за помощь

Ответы [ 3 ]

68 голосов
/ 01 января 2011

Это всего лишь ярлыки для различных пространств имен для XML. Вы можете выбрать их, как вам нравится. Если вы посмотрите на верхние строки в вашем XAML, вы найдете строку:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Например, измените 'x' на 'wpf', и вы увидите, что вам нужно изменить все префиксы 'x:' в вашем коде на 'wpf:', чтобы сделать его компиляционным. 1008 *

Префикс 'c:' ссылается на ваш собственный код. Допустим, у вас есть библиотека классов, которая компилируется в MyLib.dll. Эта библиотека содержит класс с именем MyData. Чтобы иметь возможность ссылаться на класс MyData, вам нужно что-то вроде:

xmlns:c="clr-namespace:MyClasses;assembly=MyLib"

в вашем заголовке XAML.

Затем вы можете ссылаться на класс MyData в вашем XAML с помощью c:MyData. Но вы можете свободно менять 'c' на 'myfabulousclasses' или что-то еще, что вам нравится.

Цель этого? Различать классы или членов, которые имеют одинаковые имена, но принадлежат к разным DLL.

16 голосов
/ 01 января 2011

Префикс x:

В предыдущем примере корневого элемента префикс x: использовался для сопоставления пространства имен XAML http://schemas.microsoft.com/winfx/2006/xaml,, которое является выделенным пространством имен XAML, котороеподдерживает языковые конструкции XAML.Этот префикс x: используется для отображения этого пространства имен XAML в шаблонах проектов.Пространство имен XAML для языка XAML содержит несколько программных конструкций, которые вы будете очень часто использовать в своем XAML.Ниже приведен список наиболее распространенных конструкций программирования префикса x:, которые вы будете использовать:

x: Ключ: задает уникальный ключ для каждого ресурса в ResourceDictionary (или аналогичных концепций словаря в других платформах).x: Key, вероятно, будет составлять 90% от x: использования, которое вы увидите в разметке типичного приложения WPF.

x: Class: Указывает пространство имен CLR и имя класса для класса, который предоставляет код дляСтраница XAML.У вас должен быть такой класс для поддержки выделенного кода в соответствии с моделью программирования WPF, и поэтому вы почти всегда видите x: mapped, даже если нет ресурсов.

x: Name: Указывает объект времени выполненияимя экземпляра, который существует в коде времени выполнения после обработки элемента объекта.Как правило, вы часто будете использовать определенное WPF эквивалентное свойство для x: Name.Такие свойства специально отображаются на базовое свойство CLR и, таким образом, более удобны для прикладного программирования, где вы часто используете код времени выполнения для поиска именованных элементов из инициализированного XAML.Наиболее распространенным таким свойством является FrameworkElement.Name.Вы можете по-прежнему использовать x: Name, если эквивалентное свойство Name уровня WPF не поддерживается в конкретном типе.Это происходит в определенных сценариях анимации.

x: Статический: Включает ссылку, которая возвращает статическое значение, которое в противном случае не является XAML-совместимым свойством.

x: Тип: Создает ссылку на тип на основе имени типа.Это используется для указания атрибутов, которые принимают Type, например Style.TargetType, хотя часто свойство имеет собственное преобразование строки в тип таким образом, что использование расширения разметки x: Type является необязательным.

http://msdn.microsoft.com/en-us/library/ms752059.aspx http://msdn.microsoft.com/en-us/library/ms753327.aspx

7 голосов
/ 01 января 2011

Это часть пространства имен .В вашем примере c: prefix используется, чтобы указать, что тег MyData принадлежит этому пространству имен.Вы можете взглянуть на следующую статью на MSDN, которая объясняет x: prefix в XAML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...