Я установил DisplayMemberBinding
для GridViewColumn
в WPF.WPF: используйте PriorityBinding для DisplayMemberBinding в GridViewColumn
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderErrorType}" DisplayMemberBinding="{Binding Exception, Mode=OneWay, Converter={StaticResource typeConverter}, FallbackValue='---'}"/>
typeConverter
«подражает» расширение Exception.GetType()
, чтобы показать тип исключения в качестве строки в Гуй. Если нет исключения, и это значение равно null, я хочу вывести другое свойство в этом столбце. Теперь я хочу использовать PriorityBinding
как для DisplayMemberBinding
, но ни GridViewColumn
не делает, кроме PriorityBinding
как «подэлемент», а также не может использовать атрибут DisplayMemberBinding
как «подэлемент». Есть ли способ использования PriorityBinding
для GridViewColumn
как это:
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderErrorType}">
<PriorityBinding>
<Binding Path="Exception" Mode="OneWay" Converter="{StaticResource typeConverter}" IsAsync="True" />
<Binding Path="AnotherProperty" IsAsync="True" />
</PriorityBinding>
</GridViewColumn>
EDIT
Я изменил код на предложение «АШ» ниже, но это не работает:
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderErrorType}">
<GridViewColumn.DisplayMemberBinding>
<PriorityBinding FallbackValue="-*-">
<Binding Path="Exception" Converter="{StaticResource typeConverter}" Mode="OneWay" IsAsync="True"/>
<Binding Path="Comment" FallbackValue="---"/>
</PriorityBinding>
</GridViewColumn.DisplayMemberBinding>
</GridViewColumn>
Отображаемое значение пуст, если свойство Exception
равно null. Я проверил, установлено ли второе свойство привязки «комментарий», и оно есть.
Эти два привязок работу:
Спасибо за ваш ответ! Я реализовал его так, как вы предполагали, но он работает неправильно. Если «Исключение-привязка» имеет значение NULL, оно не показывает никакого значения, даже если я определил fallbackValues для второго привязки и привязки приоритета. Я редактировал мой пост выше. – rbr94
@RobinBreusch, я думаю, если Exception имеет значение null и конвертер возвращает пустую или пустую строку, тогда PriorityBinding принимает его как допустимое значение и не использует привязку Anotherproperty (info: https://msdn.microsoft.com/en-us /library/system.windows.data.prioritybinding(v=vs.110).aspx#Anchor_6). попробуйте вернуть 'DependencyProperty.UnsetValue' из конвертера, если исключение равно null – ASh
Это решило проблему. Большое спасибо! – rbr94