Код: Выделить всё
Themes/Generic.axamlКод: Выделить всё
Код: Выделить всё
Controls/PathBox.csКод: Выделить всё
using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Data;
namespace Dashavalanche.UI.Controls;
public class PathBox : TemplatedControl
{
public static readonly DirectProperty PathProperty =
AvaloniaProperty.RegisterDirect(
nameof(Path), o => o.Path, (o, v) => o.Path = v, defaultBindingMode: BindingMode.TwoWay, enableDataValidation: true);
private string? _path;
public string? Path
{
get => _path;
set => SetAndRaise(PathProperty, ref _path, value);
}
public static readonly StyledProperty WatermarkProperty =
AvaloniaProperty.Register(nameof(Watermark));
public string? Watermark
{
get => GetValue(WatermarkProperty);
set => SetValue(WatermarkProperty, value);
}
protected override void UpdateDataValidation(AvaloniaProperty property, BindingValueType state, Exception? error)
{
base.UpdateDataValidation(property, state, error);
if (property == PathProperty)
{
DataValidationErrors.SetError(this, error);
}
}
}
Код: Выделить всё

В логических и визуальных деревьях в DevTools PathBox имеет псевдокласс :error, а внутренний TextBox — нет.
Использование Avalonia 11.3.12, .NET 8.
Подробнее здесь: https://stackoverflow.com/questions/799 ... textbox-do
Мобильная версия