I haven't found a post that already asks or answers my question, but this thread is darn close.
I have implemented the tri-state MVVM logic from the How To article. While walking through some scenarios relating to the propagation of a node check activity, a question arose regarding the reentrancyCheck flag used in the IsChecked setter:
(isChecked != value)
isChecked = value;
How would execution ever get to the test of reentrancyCheck when its value is true? I can understand that checking the node could cause the parent node to get checked which would then result in this node getting checked again, but wouldn't the test if (isChecked != value)
result in skipping all the setter processing, including the test of the reentrancyCheck flag, since value
will be the same as that assigned to isChecked immediately prior to calling UpdateCheckState?