ButtonEditor¶
ButtonEditor - это текстовый редактор, который может отображать множество встроенных обычных кнопок и переключателей.

Основные функции контрола включают в себя:
- Обычные кнопки и переключатели.
- Отображение текста и картинок на кнопках.
- Выравнивание правой и левой кнопок.
- Всплывающие подсказки.
- Встроенная кнопка "x" для удаления значения редактора.
- Водяные знаки.
Встроенные кнопки¶
Чтобы добавить встроенную кнопку, добавьте объект ButtonSettings в коллекцию ButtonEditor.Buttons. Объект ButtonSettings содержит опции отображения кнопки и поведения.
Основные свойства и события¶
ButtonKind— Указывает, является ли кнопка обычной или кнопкой переключения.Content— Текст кнопки или пользовательские данные. Используйте свойствоContentTemplate, чтобы указать шаблон для отображения пользовательских данных.Glyph— Картинка кнопки.GlyphSize— Размер картинки кнопки.IsLeft— Указывает, выровнена ли кнопка по левому или правому краю поля редактирования (по умолчанию).Click— Событие, которое позволяет вам реагировать на нажатия кнопок.Command— Указывает команду, вызываемую при нажатии на кнопку.CommandParameter— указывает параметр команды.IsChecked— Возвращает или устанавливает, кнопка нажата ли для переключения.
Пример - Как добавить обычные кнопки и переключатели¶
В следующем примере определяется контрол ButtonEditor с двумя кнопками:
- Обычная кнопка, связанная с командой ResetValue, которая устанавливает значение редактора равным '0'.
- Кнопка-переключатель, которая переключает свойства родительского редактора
IsTextEditable. Редактирование текста отключено, когда кнопка нажата.
Предполагается, что проект содержит картинки 'dot.svg', 'locked.svg' и 'unlocked.svg' в папке 'Images'. Обычная кнопка отображает картинку "dot.svg". На кнопке-переключателе отображается картинка либо "locked.svg", либо "unlocked.svg" в зависимости от состояния нажатия.
xmlns:mxe="https://schemas.eremexcontrols.net/avalonia/editors"
xmlns:local="clr-namespace:EditorsSample"
<Window.DataContext>
<local:MainViewModel/>
</Window.DataContext>
<mxe:ButtonEditor Name="btnEditor1"
EditorValue="{Binding Quantity, Mode=TwoWay}"
IsTextEditable="True">
<mxe:ButtonEditor.Buttons>
<mxe:ButtonSettings ButtonKind="Simple"
Glyph="{SvgImage 'avares://EditorsSample/Images/dot.svg'}"
Command="{Binding ResetValueCommand}"
CommandParameter="{Binding #btnEditor1}"
ToolTip.Tip = "Reset value"
>
</mxe:ButtonSettings>
<mxe:ButtonSettings ButtonKind="Toggle"
Glyph="{Binding $self.IsChecked,
Converter={local:LockedStateToSvgNameConverter}}"
IsChecked="{Binding !$parent.IsTextEditable}"
ToolTip.Tip = "Toggle text editing mode"
>
</mxe:ButtonSettings>
</mxe:ButtonEditor.Buttons>
</mxe:ButtonEditor>
using Eremex.AvaloniaUI.Controls.Utils;
namespace EditorsSample;
[ObservableObject]
public partial class MainViewModel
{
[ObservableProperty]
decimal quantity = 0;
// Sets the editor's value to '0'.
[RelayCommand]
void ResetValue(TextEditor editor)
{
// You can access the current editor from the command parameter,
// and change its value.
editor.EditorValue = 0;
}
}
public class LockedStateToSvgNameConverter : MarkupExtension, IValueConverter
{
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
{
if (value == null)
return null;
bool isLocked = (bool)value;
string lockedState = isLocked ? "locked" : "unlocked";
if (isLocked)
lockedState = "locked";
return ImageLoader.LoadSvgImage(Assembly.GetExecutingAssembly(), $"Images/{lockedState}.svg");
}
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
Кнопка Очистить значение ('x')¶
Установите для свойства ButtonEditor.NullValueButtonPosition значение ComponentPlacement.EditorBox, чтобы включить встроенную кнопку "x", которая позволяет пользователю установить текущее значение равным null.

Водяной знак¶
Как и все потомки TextEditor, контрол ButtonEditor поддерживает водяной знак (подсказка, выделенная серым цветом, отображается, когда значение редактора пустое или null).

Используйте унаследованное свойство TextEditor.Watermark, чтобы указать водяной знак.
xmlns:mxe="https://schemas.eremexcontrols.net/avalonia/editors"
<mxe:ButtonEditor Name="buttonEditor1" Watermark="User Name or Email" Margin="5">
...
</mxe:ButtonEditor>
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.