Пожалуйста, добавьте свойство UpdateSourceTrigger
в родительский класс, как показано ниже.
<TextBox
extensions:TextBoxRegex.ValidationType="Email"
Background="{Binding Path=(extensions:TextBoxRegex.IsValid),
RelativeSource={RelativeSource Mode=Self},
Converter={StaticResource StringFormatConverter},
UpdateSourceTrigger=PropertyChanged}" />
Я проверил, работает ли он, попробуйте это и дайте мне знать результат.
Обновление
Я проверил ваш код.Я нашел суть проблемы.
- Неправильный x: путь к классу (
InheritingTextBoxRepro.Control.NumericTextBox->InheritingTextBoxRepro.NumericTextBox
) - Вы не позвонили
InitializeComponent
, который использовался для инициализации xaml.
Оригинальный код
<TextBox
x:Class="InheritingTextBoxRepro.Control.NumericTextBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:extensions="using:Microsoft.Toolkit.Uwp.UI.Extensions"
xmlns:converters="using:InheritingTextBoxRepro.Converters"
extensions:TextBoxRegex.Regex="^[0-9]" extensions:TextBoxRegex.ValidationMode="Forced"
Background="{Binding (extensions:TextBoxRegex.IsValid),
RelativeSource={RelativeSource Self},
Converter={StaticResource ValidationConverter},
UpdateSourceTrigger=PropertyChanged}">
<TextBox.Resources>
<converters:ValidationConverter x:Key="ValidationConverter"/>
</TextBox.Resources>
</TextBox>
public sealed partial class NumericTextBox
{
}
Изменено
<TextBox
x:Class="InheritingTextBoxRepro.NumericTextBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:extensions="using:Microsoft.Toolkit.Uwp.UI.Extensions"
xmlns:converters="using:InheritingTextBoxRepro.Converters"
extensions:TextBoxRegex.Regex="^[0-9]" extensions:TextBoxRegex.ValidationMode="Forced"
Background="{Binding (extensions:TextBoxRegex.IsValid),
RelativeSource={RelativeSource Self},
Converter={StaticResource ValidationConverter},
UpdateSourceTrigger=PropertyChanged}">
<TextBox.Resources>
<converters:ValidationConverter x:Key="ValidationConverter"/>
</TextBox.Resources>
</TextBox>
public sealed partial class NumericTextBox
{
public NumericTextBox()
{
InitializeComponent();
}
}
Использование
<local:NumericTextBox Header="Quantity2" Text="{Binding Quantity2, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>