Я согласился бы, что "для" цикла является более ясным и более соответствующим при итерации.
, "в то время как" цикл подходит для опроса, или где количество циклов для удовлетворения условию выхода изменится на основе действия в цикле.
Finally I found the solution myself. Actually it is in the documentation - I don't know how I missed that but I paid dearly (in wasted time) for it.
According to the documentation ConvertBack
ought to return Binding.DoNothing
on positions on which no value is to be set (in particular there were OneWay
binding is desired). Another special value is DependencyProperty.UnsetValue
.
This is not a complete solution as now IMultiValueConverter
implementation must know where to return a special value. However I think most reasonable cases are covered by this solution.
Похоже, MultiBinding не работает должным образом. Я видел некоторое неожиданное поведение (что-то вроде вашего) раньше в моем Также вы можете вставить точки останова или трассировку в конвертер, и вы можете найти несколько забавных вещей о том, какие конвертеры и когда вызываются. Поэтому, если это возможно, вам следует избегать использования MultiBinding. Например, вы можете добавить специальное свойство в свою модель представления, которое будет устанавливать значение вашего изменяемого свойства в его сеттере и возвращать необходимое значение, используя все три ваших свойства в своем получателе. Это что-то вроде MultiValueConverter внутри свойства =).
Надеюсь, это поможет.