РЕДАКТИРОВАТЬ: TL / DR Вы можете использовать пользовательские расширения разметки в PriorityBinding
. Скорее всего, оно подсвечивается сообщением об ошибке, и дизайнер может не показывать его во время разработки, но во время выполнения оно работает как чудо. Кажется, проблема в конструкторе XAML или каком-либо другом внутреннем компоненте.
Что ж, у меня есть определенный сценарий ios в нашем программном обеспечении, где мне нужно отобразить переведенную строку в случае, если привязка возвращает ноль. Здесь мой производственный номер установлен только в определенной точке, и до тех пор я хочу показать «Неизвестный» в переводе на язык пользователя. Для этого мы используем пользовательскую разметку, которая возвращает привязку к промежуточному объекту, который поддерживает перевод.
К сожалению, MarkupExtension
наследуется BindingBase
, а не наоборот. Так как PriorityBinding
ожидает коллекцию BindingBase
, я не могу добавить свою разметку перевода в качестве резервной привязки.
Это то, что я пробовал:
<PriorityBinding>
<Binding Path="ProductionNumber" />
<l:Translate Key="Unknown" Context="Common" />
</PriorityBinding>
Так кто-нибудь знает, как обойти это? Использование PriorityBinding
было бы самым простым способом сделать это. Конечно, я мог бы использовать конвертер для этого, но тогда я бы исключил некоторые важные функции, реализованные в разметке, что в основном делает его бесполезным.