Во-первых, для информации мы используем свет MVVM.
У меня есть сетка, содержащая объект с привязкой к данным, и одно свойство выбранного объекта можно изменить через глобальное текстовое поле (которое находится за пределами сетки).
В начале значение свойства обновлялось через привязку текстового поля для каждой нажатой клавиши, используя следующий код:
Text="{Binding Content, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Но каждый раз, когда значение изменяется, мы производим тяжелые вычисления, поэтому мы решили обновить свойство только в LostFocus с кодом:
Text="{Binding Content, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
А теперь у меня проблема: (
Когда фокус переходит к другому элементу управления приложения, кроме линии сетки, он работает. Свойство хорошо обновляется со значением текстового поля.
Но если фокус переходит на другую строку вида сетки, он не работает. Фактически, когда выбирается новая строка, содержимое нашего свойства с данными, связанного с данными, "Content" обновляется значением новой выбранной строки, и ПОСЛЕ того, что привязка данных пытается обновить значение, когда происходит событие LostFocus.
Итак, LostFocus происходит ПОСЛЕ того, как строка изменилась, что свойство «Содержимое» уже содержит содержимое новой строки, и поэтому обновление свойства «Содержимое» для ранее выбранной строки ничего не делает.
Я пытаюсь связать данные с кодом:
Text="{Binding Content, Mode=TwoWay, UpdateSourceTrigger=Explicit}"
, но не удалось найти событие, запущенное до «SelectionChange», где нужно обновить содержимое свойства. Вы знаете один?
Или вы знаете, как обойти эту проблему? Ключ? Или что-то, что могло бы помочь ...
Спасибо!