Имеется конвертер, который принимает некоторый объект и проанализировав его свойства возвращает объект Visiability. Однако обновление должно срабатывать каждый раз, когда меняется некоторое свойство этого объекта. Приведу пример:
Visibility="{Binding Source=LoadingModelProcess,
Path=LoadingModelProcess.InProgress,
Converter={StaticResource ProcessVisiabilityConverter}}">
Нужно следующее: Когда изменится значение поля bool InProgress в объекте LoadingModelProcess, в конвертер прилетел на обработку сам объект LoadingModelProcess. Как это реализовать?
Про MultiBinding знаю, но может есть какое-нибудь другое решение?
Данное решение не помогает:
<TreeView.Visibility>
<MultiBinding Converter="{StaticResource ProcessVisibilityConverter}">
<Binding Path="LoadingModelProcess" />
<Binding Path="LoadingModelProcess.InProgress" />
</MultiBinding>
</TreeView.Visibility>
Source
у Binding
есть всегда, и это не "выходное" значение, а "входное". Когда свойство не задано (равно null
), то используется "значение по умолчанию" — текущий DataContext
. Выходное значение у Binding
одно, и порядок вычисления значения в Binding
один:
Source
/ RelativeSource
/ ElementName
("по умолчанию": DataContext
)Path
/ XPath
("по умолчанию": .
)Converter
(по умолчанию: null
)StringFormat
/ автоматический конвертер ("по умолчанию": null
)Source
остаётся и выходным значением только тогда, когда все остальные преобразования в цепочке отсутствуют.
Чтобы подписаться на изменения одного свойства, а получать на выходе другое, вам нужны различающиеся входы и выходы, а значит, MultiBinding
.
Минусом является то, что вам может понадобиться написать конвертер ProcessVisibilityMultiConverter
, что несколько архитектурно неприятно. Самый простой альтернативный способ — реализовать IMultiConverter
прямо в ProcessVisibilityConverter
. Самый сложный, но мощный — сделать конвертер, который собирается из других конвертеров, чтобы можно было пробрасывать одно из значений MultiBinding
в обычный конвертер.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем приветЕсть элемент класса Polygon, у него есть 4 точки, две из которых необходимо анимированно переместить
Есть сервер на шаблоне web API (asp) (файл конфигурации json)Мне необходимо загрузить файл в формате xml на сервер и прочитать данные из него
Пытаюсь преобразовать один Expression<Func<double, double>> в другой, однако при попытке компиляции полученного выражения, появляется ошибка