私は、空のテキストボックスまたは or 、 、 のようなテキストと一致するようにaをWPF (.NET 3.5)
検証する必要があるアプリケーションを開発しています。私が使う表現は です。 textbox
regular expression
02145
05145
02145
05879
02445
^(0(2|5)[0-9]{3})?((,0(2|5)[0-9]{3})*?)$
空のテキストボックスを持たせないというだけで、ほとんど機能します。ここにいくつかのコードがあります
<Window.Resources>
<data:Message x:Key="message"/>
<Style x:Key="validButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}" >
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!-- ......-->
<Condition Binding="{Binding ElementName=txtNumbers, Path=(Validation.HasError)}" Value="false"/>
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="True" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
<TextBox Height="23" Margin="-194.5,-88,-195.5,0" Name="txtNumbers" VerticalAlignment="Top" Style="{StaticResource txtboxerrors}">
<TextBox.Text>
<Binding Path="Numbers" Source="{StaticResource message}" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<Button Height="23" Margin="0,0,-81,-189" Name="btnSendSMS" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="75" Click="btnSubmit_Click" Style="{StaticResource validButton}">Submit</Button>
検証に使用されるクラスは以下のとおりです
class Message :IDataErrorInfo
{
//...
private string numbers;
public string this[string columnName]
{
get
{
string result = null;
//.....
if (columnName == "Numbers")
{
//multicellRegex has the ^(0(2|5)[0-9]{3})?((,0(2|5)[0-9]{3})*?)$ expression if(!Util.ValidateRegexPatern(Properties.Resources.multicellRegex,this.numbers))
{
result = "Number not in the correct format.try 020xx or 05xxx,026xx";
}
}
return result;
}
}
public string Error
{
get { return null; }
}
//.....
public string Numbers
{
get { return numbers; }
set { numbers = value; }
}
}
これはうまくいきますが、txtNumbersテキストボックスに1つ以上の数字を入力しない限り、送信ボタンはアクティブになりません。空のテキストボックスを許可したいだけです。どうすればそれを達成できますか?読んでくれてありがとう