Почему этот код не работает? Ничего не происходит после запуска? Я хотел бы иметь ошибку проверки на мой взгляд - PullRequest
0 голосов
/ 14 февраля 2020

такой код у меня в представлении

<TextBox 
        Text="{Binding MiejsceWykonaniaNadgodzin,  UpdateSourceTrigger=PropertyChanged}" 
        Name="MiejsceWykonaniaNadgodzinText" Margin="50 50 50 50">
    <Validation.ErrorTemplate>
        <ControlTemplate>
            <StackPanel>
                <!-- Placeholder for the TextBox itself -->
                <AdornedElementPlaceholder x:Name="textBox"/>
                <TextBlock Text="{Binding [0].ErrorContent}" Foreground="Red"/>
            </StackPanel>
        </ControlTemplate>
    </Validation.ErrorTemplate>
</TextBox>

и такой код в модели

public string MiejsceWykonaniaNadgodzin
{
    get { return miejsceWykonaniaNadgodzin; }

    set
    {
        this.miejsceWykonaniaNadgodzin = "aaa";

        OnPropertyChanged();
    }
}

public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged( string miejsceWykonaniaNadgodzin = null)
{
    PropertyChanged?.Invoke(this, new System.ComponentModel.PropertyChangedEventArgs(miejsceWykonaniaNadgodzin));
}

Я написал цифры, например 2222 в моем текстовом поле, и ошибка не отображается там.

1 Ответ

0 голосов
/ 14 февраля 2020
<TextBox Name="MiejsceWykonaniaNadgodzinText" Margin="50 50 50 50">
    <TextBox.Text>
       <Binding Path="MiejsceWykonaniaNadgodzin"  UpdateSourceTrigger="PropertyChanged" >
             <Binding.ValidationRules>
                  <local:MiejsceWykonaniaNadgodzinTextRule />
             </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
    <Validation.ErrorTemplate>
        <ControlTemplate>
            <StackPanel>
                <!-- Placeholder for the TextBox itself -->
                <AdornedElementPlaceholder x:Name="textBox"/>
                <TextBlock Text="{Binding [0].ErrorContent}" Foreground="Red"/>
            </StackPanel>
        </ControlTemplate>
    </Validation.ErrorTemplate>
</TextBox>

и

public class MiejsceWykonaniaNadgodzinTextRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        //example test
        if(value.ToString() == "aaa")
            return new ValidationResult(false, $"Error: value = aaa");
        return ValidationResult.ValidResult;
    }
}

не забудьте изменить

public string MiejsceWykonaniaNadgodzin
{
    get => miejsceWykonaniaNadgodzin;
    set
    {
        this.miejsceWykonaniaNadgodzin = value;//"aaa";

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