I’m probably doing something wrong, but I don’t see what I’m missing.
I have three component files (razor files) which implements each other component like so (pseudo code):
Parent.razor:
<Child Value = StartValue
ValueChanged = StartValueChanged
MaxValue = EndValue
MaxValueChanged = EndValueChanged/>
<Child Value = EndValue
ValueChanged = EndValueChanged
MinValue = StartValue
MinValueChanged = MinValueChanged/>
Child.razor:
<Base Value = Value
ValueChanged = ValueChanged
MinValue = MinValue
MinValueChanged = MinValueChanged
MaxValue = MaxValue
MaxValueChanged = MaxValueChanged />
Base.razor shows the values. In the Child.razor I do conversions to keep the code more manageable. The Values used in this example are local variables updated by functons and these local variables are then passed through to the base.
Now the problem:
When either the start or end values are changed in the Parent.razor, the change only goes one layer deep. It only updates the Child.Razor and doesn’t continue to the Base.razor.
I have to manually make a reference to the base and give it an update function before it actually updates.
Otherwise the update only occurs when I do something on screen, like a button press.
I’ve tried invoking the changed functions and StateHasChanged(), but nothing seems to work.
The solution I’m using now is this:
Child.razor:
<Base @Ref=BaseRef
Value = Value
ValueChanged = ValueChanged
MinValue = MinValue
MinValueChanged = MinValueChanged
MaxValue = MaxValue
MaxValueChanged = MaxValueChanged
OnOpenDialog = UpdateMinMax/>
@code{
UpdateMinMax(){
BaseRef.UpdateMaxValue(MaxValue);
BaseRef.UpdateMinValue(MinValue);
}
}
When I use this example I don’t need a buttonpress to update the values and it is direct. I know it works, but it doesn’t feel the way it should be done. Are there any suggestions?