Здесь обсуждается большое количество скрытых функций для разных языков. Теперь мне интересно узнать о некоторых скрытых функциях XAML и WPF?
Один, который я нашел, - это событие щелчка заголовка ListView
<ListView x:Name='lv'
Height="150"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">
Свойство GridViewColumnHeader.Click отсутствует в списке.
Некоторые из актуальных на данный момент функций:
Смотрите также:
wpf
xaml
hidden-features
Sauron
источник
источник
Ответы:
Мультибиндинг (в сочетании со StringFormat):
источник
Существует также трюк PresentationTraceSources.TraceLevel для отладки того, что происходит с привязками в любом конкретном сценарии. Все, что вам нужно сделать, это указать пространство имен System.Diagnostics в сборке WindowsBase.
а затем добавьте следующее в выражение привязки:
Журнал будет таким:
источник
3.5sp1 представил привязки TargetNullValue. Это установит привязанное свойство в Null, если значение введено, и если ваше свойство равно Null, оно отобразит это значение.
источник
3.5sp1 ввел StringFormat в выражения привязки, например
источник
Text={Binding Date, StringFormat='{}{0:MM/dd/yyyy}'}"
Иногда вы получаете строку, которая слишком длинная для отображения на этикетке. В этом случае мы можем использовать
TextTrimming
свойствоTextBlock
показывать эллипсы.Ссылка MSDN
источник
Добавление эффекта Aero в окно
источник
Обобщения в XAML с x: TypeArguments
Если вы хотите использовать ObservableCollection в XAML, вам необходимо создать тип, производный от ObservableCollection, потому что вы не можете объявить его в XAML. В XAML 2009 вы можете использовать атрибут x: TypeArguments для определения типа универсального типа.
источник
Показать всплывающую подсказку для отключенного элемента управления
Wpf позволяет отображать всплывающую подсказку для элемента управления, если он отключен.
Например
источник
Использование конструкторов не по умолчанию с аргументами x:
В XAML 2006 объекты должны иметь общедоступный конструктор по умолчанию для их использования. В XAML 2009 вы можете передавать аргументы конструктора, используя синтаксис x: Arguments.
источник
Не совсем скрытая функция, но с WPF / XAML вы получаете Беа Столльниц и Джоша Смита . Королева и король программирования WPF / XAML.
источник
Расширения разметки и присоединенные свойства - мои любимые функции, они позволяют очень элегантно расширять «словарь» XAML.
Расширения разметки
Прикрепленные свойства
Источник для GridViewSort (кстати, он использует
GridViewColumnHeader.Click
событие, упомянутое Ортусом)источник
WinUtil.EnableAeroGlass
нибудь доступен источник ?Вы можете ссылаться на вложенные типы в XAML, используя знак плюса (
+
). Например, если бы у нас был этот класс:Мы могли бы ссылаться на
SomeValue
XAML, используя следующий синтаксис:Этот синтаксис не задокументирован в MSDN и официально не поддерживается. Кто-то спросил об этом на форумах MSDN, и, по-видимому, это нарушает конструктор WPF VS2010. Об этом сообщается в Microsoft Connect.
источник
Совместное использование размера сетки ( вот хороший пример). Короче говоря, столбцы и строки сетки могут иметь одинаковый размер даже в разных сетках. Это будет бесценно для всех людей, которые используют DataGrids без необходимости редактировать данные на месте.
источник
PriorityBinding . Позволяет использовать асинхронные привязки в порядке «первым пришел первый показ»:
источник
Использование статических фабричных методов с x: FactoryMethod
Если у вас есть тип, у которого нет общедоступного конструктора, но есть статический фабричный метод, вам нужно было создать этот тип в коде в XAML 2006. В XAML 2009 вы можете использовать атрибут x: FactoryMethodx: Arguments для передачи значений аргументов.
источник
Расширенные свойства заголовка
Еще не очень понятно, что содержимое некоторых свойств, к которым мы привыкли, содержит только текст. Если свойство элемента графического интерфейса относится к типу Object, весьма вероятно, что вы можете, вместо того, чтобы просто устанавливать текст, добавить панель по вашему желанию, которая включает набор элементов управления.
Примером этого является MenuItem, где
Header
свойство (обычно содержащее только текст) может содержать набор элементов графического интерфейса, заключенных в элемент управления панели (или только один элемент графического интерфейса, если вам нужен только один).Также обратите внимание на
Icon
свойство MenuItem. Обычно он содержит элемент изображения, но он также может содержать что угодно!источник
Конвертеры XAML
В следующем списке показаны конвертеры, разработанные сообществом WPF для преобразования различных форматов в XAML или наоборот.
Плагин экспорта Adobe Illustrator XAML
Конвертер Adobe Photoshop в XAML
Плагин экспорта XAML Blender
Плагин экспорта Lightwave XAML
Экспорт Visio XAML
Конвертер 3D Studio Max в XAML
Конвертер Maya в XAML
Конвертер Flash в XAML
Конвертер SVG в XAML
Конвертер WMF / EMF в XAML
источник
Встроенные типы
Если вы хотите добавить объекты простых типов, таких как string или double, в словарь ресурсов сегодня, вам необходимо сопоставить необходимые пространства имен clr с пространствами имен XML. В XAML 2009 много простых типов, включенных в язык XAML.
В язык XAML включены следующие типы:
источник
Простые ссылки на объекты с {x: Reference}
Если вы хотите создать ссылку на объект сегодня, вам необходимо выполнить привязку данных и объявить источник с помощью ElementName. В XAML 2009 вы можете использовать новое расширение разметки {x: Reference}
источник
x:Reference
это функция языка XAML 2009, в некоторых сценариях она также будет работать в скомпилированном XAML. Однако он работает не везде и может нарушить представление конструктора XAML.Использование системных цветов
источник
Поддержка ключей произвольного словаря
В XAML 2006 все явные значения x: Key обрабатывались как строки. В XAML 2009 вы можете определить любой тип ключа, который вам нравится, написав ключ в ElementSyntax.
источник
Установить ValidationError по коду
ValidatioRule в BindingExpression срабатывает только при изменении целевой стороны привязки. Если вы хотите установить ошибку проверки по коду, вы можете использовать следующий фрагмент.
Установите ошибку проверки
Очистить ошибку проверки
источник
Возможность вставки UIElement (ов) в текстовый блок
Я не знаю, насколько это полезно (хотя это и считается скрытым) ... но оно наверняка застало меня врасплох, когда я впервые столкнулся с ним :
Вы можете утверждать, что следующий xaml может быть полезен (например, размещение рисунка в конце некоторого текста):
Вышеупомянутый xaml отображается следующим образом:
источник
Отладка анимации
Общие ошибки
Если вы получаете следующую ошибку: Невозможно анимировать '(0). (1)' в экземпляре неизменяемого объекта. возможно, вы столкнулись с одним из следующих ограничений:
источник
Связывание без INotifyPropertyChanged или DependencyProperties
Как обсуждалось здесь, вы можете привязать простое свойство объекта CLR без INotifyPropertyChanged, и оно будет работать .
Вот форум, о котором я говорю.
Quote:
Вот еще одна отличная и подробная статья на эту тему.
источник