Чтобы сохранить пробелы в разметке XAML, необходимо в нужном узле задать атрибут:
xml:space="preserve"
Далее использовать пробелы и/или символы переноса строки:


x0A – это символ переноса строки в шестнадцатеричном фрмате в таблице символов ASCII с префиксом &#, который подсказывает это процессору XAML. Аналогичным образом можно использовать и другие непечатные символы из таблицы ASCII.
<sys:String x:Key="myString" xml:space="preserve">My String with carry return</sys:String>
Здесь:
– символ переноса строки в таблице ASCII;
xml:space="preserve"
– директива, указывающя парсеру XAML, что пробельные символы нужно сохранить. Если её не указать, парсер удалит все «лишние» пробелы, в т.ч. переносы строк.
Чтобы сделать в WPF в панели меню какие-то пункты с выравниваеним по правому краю (например, меню «Справка» или «О программе»), можно описать в XAML произвольную панель элементов, как в примере ниже:
Чтобы создать окно без рамок и без стандартных элементов управления, в файле разметки в свойствах окна достаточно добавить 3 атрибута: WindowStyle, AllowsTransparency и Background.
Для удобства пользователя желательно добавить возможность закрыть окно, а также перетаскивать его по рабочему столу:
Public Class BorderlessWindow
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
Me.Close()
End Sub
Private Sub Window_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs)
Me.DragMove()
End Sub
End Class
Для определения родительского элемента контекстного меню в WPF нужно сделать следующее:
Dim itm As MenuItem = CType(sender, MenuItem)
Dim ctxMnu As ContextMenu = CType(itm.Parent, ContextMenu)
Dim parent As UIElement = ctxMnu.PlacementTarget
Допустим, что мы задали в XAML для текстового элемента TextBlock привязку и хотим узнать её в застраничном коде. Это делается так:
Dim be As BindingExpression = myTextBlock.GetBindingExpression(TextBlock.TextProperty)
Dim bnd As Binding = be.ParentBinding
Dim bindingPath As String = bnd.Path.Path