Git Product home page Git Product logo

Comments (7)

worldbeater avatar worldbeater commented on May 2, 2024 1

ReactiveUI.Validation with the fix is now shipped to NuGet as ^1.6.4.

from reactiveui.validation.

worldbeater avatar worldbeater commented on May 2, 2024

Thanks for reporting this! Curious if BindValidation is not showing validation errors in this case If yes, then probably the issue is in this class https://github.com/reactiveui/ReactiveUI.Validation/blob/main/src/ReactiveUI.Validation/Helpers/ReactiveValidationObject.cs

GitHub
Validation helpers for ReactiveUI based solutions, functioning in reactive way. - reactiveui/ReactiveUI.Validation

from reactiveui.validation.

ScarletKuro avatar ScarletKuro commented on May 2, 2024

Yes, just tried with the BindValidation and it works correctly. I updated the repo with the BindVlidation example.

from reactiveui.validation.

ScarletKuro avatar ScarletKuro commented on May 2, 2024

But I'm not sure that the problem is ReactiveValidationObject. Feels like it's some synchronization problem. In my observations, if we take IDataErrorInfo and make it rely on ValidationContext with some simple code like this

public string? this[string columnName]
{
    get
    {
        var temp = ValidationContext.Validations
            .OfType<IPropertyValidationComponent<ClassicValidationViewModel>>()
            .Where(validation => !validation.IsValid && validation.ContainsPropertyName(columnName))
            .Select(validation => validation.Text?.ToSingleLine()).FirstOrDefault();
        return temp;
    }
}

We get the same problem as with ReactiveValidationObject that uses INotifyDataErrorInfo
During the debug, when we change CustomerCode in viewmodel lets say to empty and the IDataErrorInfo is firing, we see that the ValidationContext.Validations.IsValid is true

from reactiveui.validation.

mickut avatar mickut commented on May 2, 2024

I encountered this too, and I think it indeed has to do with INotifyDataErrorInfo implementation in ReactiveValidationObject. AFAIK the WPF framework expects the validation change events to explicitly contain the changing property name as a parameter of DataErrorsChangedEventArgs, but now that event is triggered with a string.Empty only when ValidationContext.ValidationStatusChange occurs.

It should trigger the ErrorsChanged -event with affected main property whenever any validator error changes, not just the state. That way two validators (e.g. not empty, and must meet some format requirement) can be indicated and triggered correctly.

A workaround could be to add a protected RaiseErrorChanged(Expression<...> viewModelProperty) to the ReactiveValidationObject so you could listen to the error message changes from a specific ValidationRule and trigger a new ErrorChanged event with the property name.

from reactiveui.validation.

worldbeater avatar worldbeater commented on May 2, 2024

Looking into this now. Most likely we are hitting https://stackoverflow.com/a/24837028/11351183

Stack Overflow
I have a model implementing both INotifyPropertyChanged and INotifyDataErrorInfo. The Property changed event fires when ever I have a property modified, but for some reason when I raise the Error e...

from reactiveui.validation.

github-actions avatar github-actions commented on May 2, 2024

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

from reactiveui.validation.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.