Вопрос об этом расширении разметки xaml
Я пытаюсь понять, что делает расширение разметки для атрибута x:Key ниже и что это за расширение разметки?
<Window x:Class="App1.Window1" xmlns:dxg="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<DataTemplate x:Key="{dxg:Example ResourceKey=Example}">
<dxg:TextEdit Text="123/>
</DataTemplate>
</Window>
Благодарю.
2 ответа
Ну, этот пример ничего не будет делать, скорее, он потерпит неудачу, потому что расширение разметки не называется Example
в пространстве имен WPF.
Но если бы существовало расширение разметки с именем Example
, что бы он сделал, это создать экземпляр ExampleMarkupExtension
объект, установите его ResourceKey
свойство, а затем назвать его ProvideValue
метод, который возвращает объект, который будет использоваться в качестве ключа для элемента, добавляемого в словарь ресурсов.
Без большего контекста трудно понять, что приведенный вами пример предназначен для демонстрации. Я предполагаю, что демонстрируемые концепции: а) что ключом к словарю ресурсов может быть любой объект, а не просто строка, и б) что вы можете использовать расширение разметки для генерации этого ключа. Реальный пример:
<DataTemplate x:Key="{x:Type TextBox}">
который добавляет DataTemplate
с ключом typeof(TextBox)
в словарь ресурсов.
Обычно атрибут x:Key позволяет вам ссылаться на ресурс по ключу, в этом случае, поскольку шаблон не находится в ResourceDictionary, я не уверен, что он имеет какое-либо назначение!
Надеюсь это поможет!