Bartek Szafko

all of the bits and pieces

WPF: Konwertery w XAMLu

without comments

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.

Strona projektu wpf-converters

Inne podobne artykuły:

Written by Bartłomiej Szafko

Marzec 22nd, 2010 at 5:00 am

Posted in Development,WPF

2 Trackbacks/Pingbacks

  1. dotnetomaniak.pl
  2. dotnetomaniak.pl

without comments to “WPF: Konwertery w XAMLu”

Subscribe comments with RSS. TrackBack URL.

Leave a Reply