Frage

Ich mag ein Bild zu einem boolean gebunden haben und habe die Quelle des Bildes auf dem Booleschen Wert abzuhängen

d. wahre Quelle = "image1" false source = "Bild2"

Ich frage mich, ob es eine Möglichkeit, es inline für einen Konverter ohne Notwendigkeit zu tun ist.

War es hilfreich?

Lösung

Sie können einen Stil auf dem Bild erstellen, die einen Datatrigger verwendet die Bildquelle auf einer Bindung abhängig zu tauschen. In diesem Beispiel abhängig ändert sich das Bild auf dem Wert eines boolean einfach „Wert“ bezeichnet.

    <Image Width="16">
        <Image.Style>
            <Style TargetType="{x:Type Image}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Value}" Value="False">
                        <Setter Property="Source" Value="Resources/image1.png"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Value}" Value="True">
                        <Setter Property="Source" Value="Resources/image2.png"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Image.Style>
    </Image>

Andere Tipps

Wenn jemand für Value Converter für die Bindung suchen. Hier ist, was ich verwenden,

<Image Source="{Binding Converter={StaticResource ImageConverter},ConverterParameter=\{Status\}}" />

public class StatusToImageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string statusValue = parameter.ToString().ToUpper();

        if (!string.IsNullOrEmpty(statusValue))
        {
            string result = string.Empty;

            switch (statusValue)
            {
                case "IDLE":
                    result = "idle.png";
                    break;
                case "OFFLINE":
                    result = "offline.png";
                    break;
                default:
                    result = "online.png";
                    break;
            }

            var uri = new Uri("pack://application:,,,/PIE;component/Images/" + result);

            return uri;
        }

        return string.Empty;
    }

    // No need to implement converting back on a one-way binding
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return DependencyProperty.UnsetValue;
    }
}

Bounded Enum

public enum DevStatus 
{ 
   Idle = 1,
   Offline = 2, 
   Active = 3, 
}

Set Enum von Ansichtsmodell und Konverter wird das entsprechende Bild binden.

<Image Source="{Binding DevStatus, Converter={StaticResource ImageConverter}}" />

Wenn Sie nur die Image::Source Eigenschaft Bindung direkt dann der einzige Weg, dies zu tun ist mit einem benutzerdefinierten IValueConverter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top