Кнопка Отключить при проверке WPF - PullRequest
0 голосов
/ 23 сентября 2019

Я сделал проверку правила для свойства.Я хочу, чтобы при невыполнении условия кнопка сохранения была отключена.Как я могу это сделать?Вот как это выглядит: image .Кнопка не отключена.

Это мой код

public string FieldName { get; set; }
public Regex regularExpression = new Regex("^[a-zA-Z]*$");

public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{

    //var stringValue = value as string;
    if (FieldName == "Age")
        return AgeValidate(value);
    if (FieldName == "Name")
        return NameValidation(value);
    return new ValidationResult(true, null);

}


private ValidationResult NameValidation(object value)
{
    var onlyCharacters = regularExpression.IsMatch((string)value);
    if (onlyCharacters)
        return new ValidationResult(true, null);
    else
        return new ValidationResult(false, $"Only alfabetical charaters");

}

В XAML:

<Label Grid.Row="0" Grid.Column="0" Margin="103,0,98,10" Content="Name : " VerticalContentAlignment="Center" HorizontalContentAlignment="Right" Grid.ColumnSpan="2"/>
<TextBox   Grid.Row="0" Grid.Column="1" x:Name="txtCourtName"  Margin="113,4,-55,6" VerticalContentAlignment="Center" HorizontalContentAlignment="Left"  Validation.ErrorTemplate="{StaticResource errorTemplate}"  >
    <TextBox.Text>
        <Binding Path="CourtName" ValidatesOnDataErrors="true" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <local11:AuthValidation FieldName="Name"></local11:AuthValidation>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

Кнопка:

<Button Content="Save" x:Name="btnSaveCourt"  Command="{Binding SaveCourt}" Margin="2,10" Width="119"  Background="#909090" Foreground="Black" BorderBrush="White" />

И мойшаблон для ошибки:

<ControlTemplate x:Key="errorTemplate">
    <Border BorderBrush="OrangeRed" BorderThickness="2">
        <Grid>
            <AdornedElementPlaceholder>
                <TextBlock Text="{Binding [0].ErrorContent}" Foreground="OrangeRed" 
                                   VerticalAlignment="Center" HorizontalAlignment="Right"
                                   Margin="-220"
                                   >
                </TextBlock>
            </AdornedElementPlaceholder>
        </Grid>
    </Border>
</ControlTemplate>

1 Ответ

0 голосов
/ 23 сентября 2019

Вы можете привязать IsEnabled кнопки к свойству, bool propfull (напишите вкладку propfull, и она запишет ее для вас в visual studio).

Или вы можете использовать MultiDataTrigger на кнопке ипривязать все свойства HasError к текстовым полям, которые вы хотите проверить.

Или, если вы используете команду, вы можете использовать ее свойство can execute.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...