Получить и установить binding converter в коде позади
У меня есть набор привязок к свойству Text
A TextBlock
в моем XAML следующим образом:
<TextBlock x:Name="MyTextBlock" TextWrapping="Wrap" Text="{Binding TextProperty, Converter={StaticResource MyConverter}}"/>
Я хочу изменить конвертер из кода-за dependind, от которого в данный момент используется. Как я могу получить и установить конвертер привязки из кода позади? Id ' как что-то вроде:
if (converter = x)
converter = y;
else
converter = x;
1 ответ:
Вам нужно будет получить саму привязку:
//For WPF: // var binding = BindingOperations.GetBindingBase( // MyTextBlock, // TextBlock.TextProperty); //For SilverLight we have to use the expression: var expr = MyTextBlock.GetBindingExpression(TextBlock.TextProperty); if (expr != null) { // for Silverlight we have to use the ParentBinding of the expression var binding = expr.ParentBinding; binding.Converter = yourLogicHere; // in WPF there are 3 types of bindings /* else if (binding is MultiBinding) { ((MultiBinding)binding).Converter = yourMultiLogicHere; } else if (binding is PriorityBinding) { foreach (var childBinding in ((PriorityBinding)binding).Bindings) { ((Binding)childBinding).Converter = yourLogicHere; } } */ }