以下触发转换器:
<TextBox Header="Quantity"
Text="{Binding Quantity, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
extensions:TextBoxRegex.Regex="^[0-9]" extensions:TextBoxRegex.ValidationMode="Forced"
Background="{Binding (extensions:TextBoxRegex.IsValid), RelativeSource={RelativeSource Self}, Converter={StaticResource ValidationConverter}}" />
而事实并非如此:
<TextBox
x:Class="MyApp.Controls.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:MyApp.Converters"
extensions:TextBoxRegex.Regex="^[0-9]" extensions:TextBoxRegex.ValidationMode="Forced"
Background="{Binding (extensions:TextBoxRegex.IsValid), RelativeSource={RelativeSource Self}, Converter={StaticResource ValidationConverter}}">
<TextBox.Resources>
<converters:ValidationConverter x:Key="ValidationConverter"/>
</TextBox.Resources>
</TextBox>
使用时:
<NumericTextBox Header="Quantity" Text="{Binding Quantity, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
那么如何在继承的UWP控件中绑定到自身?
更新:这是repro
答案 0 :(得分:0)
请像下面这样将$sz !~ /[^[:xdigit:]]/ # Doesn't contain non-hex digits
属性添加到父类。
UpdateSourceTrigger
我已经测试了它的工作原理,请尝试一下并让我知道结果。
更新
我已经检查了您的代码。我发现了问题的症结所在。
<TextBox
extensions:TextBoxRegex.ValidationType="Email"
Background="{Binding Path=(extensions:TextBoxRegex.IsValid),
RelativeSource={RelativeSource Mode=Self},
Converter={StaticResource StringFormatConverter},
UpdateSourceTrigger=PropertyChanged}" />
)InheritingTextBoxRepro.Control.NumericTextBox->InheritingTextBoxRepro.NumericTextBox
。原始代码
InitializeComponent
已修改
<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();
}
}