Na codeplex jest świetny projekt autorstwa Kenta Boogarta pozwalający na definiowane converterów w XAMLu.
Na przykład gdy chcielibyśmy podłączyć Visibility do stringa( wartości Tak lub Nie ) można by napisać:
<Label Content="Test123"> <Label.IsVisible> <Binding Path="MaBycWidocznyTekstowo"> <Binding.Converter> <con:MapConverter> <con:Mapping From="TAK" To="{x:Static Visibility.Visible}"/> <con:Mapping From="NIE" To="{x:Static Visibility.Collapsed}""/> </con:MapConverter> </Binding.Converter> </Binding> </Label.IsVisible> </Label>
Może być jeszcze ciekawiej, bo w ExpressionConverter można stosować wyrażenia logiczne dla MultiBinding:
<MultiBinding> <MultiBinding.Converter> <con:ExpressionConverterExtension> <con:ExpressionConverterExtension.Expression> <![CDATA[ {0} && {1} && {3} && !{2} ]]> </con:ExpressionConverterExtension.Expression> </con:ExpressionConverterExtension> </MultiBinding.Converter> <Binding Path="IsChecked" ElementName="_rammstein"/> <Binding Path="IsChecked" ElementName="_powderfinger"/> <Binding Path="IsChecked" ElementName="_nickelback"/> <Binding Path="IsChecked" ElementName="_ministry"/> </MultiBinding>
Jedyny trick, z którego warto sobie zdawać sprawę to w pewnych okolicznościach multibinding z ExpressionConverterem może zwrócić wyjątek w trybie design w visual studio. Nie można wtedy już nic zrobić wizualnie, warto wtedy sprawdzić czy na każdym z bindingów jest ustawiona odpowiednia wartość FallbackValue.
WPF: Konwertery w XAMLu…
Dziękujemy za publikację – Trackback z dotnetomaniak.pl…
Bartek Szafko ? WPF: Konwertery w XAMLu…
Dziękujemy za publikację – Trackback z dotnetomaniak.pl…