Рейтинг@Mail.ru

Отмена привязки сочетания клавиш для команд в WPF

Опубликовано в Полезные советы

Иногда мы хотим отменить стандартное сочетание клавиш для какой-либо команды в XAML. Например, де-факто справка во всех WPF (и не только) приложениях вызывается по нажатию кнопки F1. Но мы хотим, чтобы окно справки открывалось по нажатию на F2, а на F1 – нет. Если мы напишем так:

<KeyBinding Key="F2" Command="Help" />

то справка будет открываться и по нажатию F2, и по нажатию F1. Необходимо явно отключить срабатывание по нажатию кнопки F1. Для этого следует написать так:

<KeyBinding Key="F2" Command="Help" />
<KeyBinding Key="F1" Command="NotACommand" />
Подробнее ...

Проверка значений, вводимых в поле TextBox, в XAML

Опубликовано в Полезные советы

В WPF имеется специальный стандартный механизм, позволяющий выполнять проверку (валидацию) данных, вводимых пользователем в текстовое поле TextBox. Этот механизм называется правилами проверки (validation rule). Для полей ввода, в которые введены недопустимые значения, в WPF даже определён свой стиль: красная рамка вокруг элемента TextBox. Конечно, его можно переопределить.

Чтобы воспользоваться стандартным валидатором, нужно выполнить три простых шага. Давайте рассмотрим их на таком примере: есть свойство MyProperty типа Integer, и его значение должно лежать в границах от 1 до 10.

1) Сначала создаём класс, который является наследником класса ValidationRule:

Подробнее ...

Можно ли использовать константы условной компиляции в XAML

Опубликовано в Программирование

Мы рассматривали такое мощное средство Visual Studio как константы условной компиляции. Это средство позволяет, в зависимости от значения заданной константы, включать и исключать из исполняемого файла те или иные участки кода. А существует ли аналогичная возможность для разметки XAML?

Подробнее ...

WPF: Использование системных цветов

Опубликовано в Полезные советы

Для использования системных цветов в XAML необходимо объявить цвет в секции ресурсов:

<Window.Resources>
    <SolidColorBrush x:Key="sysColor" Color="{DynamicResource {x:Static SystemColors.ControlColorKey}}" />
</Window.Resources>

А затем его можно использовать в разметке так:

<Menu Background="{StaticResource sysColor}"></Menu>
Подробнее ...

Что делать если изображение видно в редакторе XAML, но при выполнении приложения - нет

Опубликовано в Полезные советы

У вас ситуация: в редакторе XAML в Visual Studio вы задали визуальный элемент Image, который использует картинку из папки проекта. Вы видите её в редакторе, всё нормально. Но стоит запустить скомпилированное приложение – и изображения в нём не видно. Что делать?

Иногда помогает очистка решения и перекомпиляция: Построение Очистить, Построение Перестроить проект.

Если не помогло, кликаем правой кнопкой мыши на изображении в обозревателе решений, выбираем Свойства, в открывшейся панели свойств идём в Действия при сборке (BuildActions) "Нет" меняем на Ресурс (Resource).

Панель свойств изображения в Visual Studio 2013
Подробнее ...

XAML: Почему текст в ListView не переносится на новую строку

Опубликовано в Полезные советы

По умолчанию, если ширина элемента списка ListView больше, чем ширина списка, его содержимое не переносится на новую строку. Чтобы перенос происходил, нужно использовать шаблон DataTemplate, применённый к элементу списка:

<ListView ItemsSource="{Binding myCollection}" ItemTemplate="{StaticResource lvDataTemplate}" />

Шаблон будет таким:

<DataTemplate x:Key="lvDataTemplate">
    <TextBlock Text="{Binding}" TextWrapping="Wrap" />
</DataTemplate>
Подробнее ...

WPF: Как подогнать ширину столбцов GridView под содержимое элементов

Опубликовано в Полезные советы

Чтобы подогнать ширину всех столбцов таблицы GridView под ширину содержимого можно воспользоваться таким решением:

For Each gvc As GridViewColumn In myListView.View.Columns
    If Double.IsNaN(gvc.Width) Then
        gvc.Width = gvc.ActualWidth
        gvc.Width = Double.NaN
    End If
Next
Подробнее ...

WPF: Как привязать ComboBox к целочисленному массиву в XAML

Опубликовано в Полезные советы

Сначала в разделе ресурсов создадим целочисленный массив, не забыв импортировать пространство имён mscorlib:

<Window xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <Window.Resources>

        <x:Array Type="{x:Type sys:Int32}" x:Key="refreshPeriods">
            <sys:Int32>100</sys:Int32>            
            <sys:Int32>500</sys:Int32>
            <sys:Int32>1000</sys:Int32>
            <sys:Int32>2000</sys:Int32>
        </x:Array>

И теперь используем ComboBox так:

<ComboBox ItemsSource="{StaticResource refreshPeriods}" SelectedValue="{Binding UpdateDiagramTimerPeriod, Mode=TwoWay}" />
Подробнее ...
Подписаться на этот канал RSS