質問

私はブール値に依存するブール値にバインドされたイメージを持っているし、イメージのソースを持っていると思います。

すなわち。真の源=「画像1」偽ソース=「画像2」

コンバータを必要とせずにインラインでそれを行う方法がある場合は、

私は思っていた。

役に立ちましたか?

解決

あなたはバインディングに応じて、画像ソースを交換するDataTriggerを使用して画像上のスタイルを作成することができます。この例では、画像は、単に「値」と呼ばれるブールの値に応じて変化します。

    <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>

他のヒント

誰が結合するための値コンバータを探している場合。ここで私が使用したものです。

<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;
    }
}

有界列挙

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

ビューモデル及び変換器からenumセットは、適切な画像を結合するであろう。

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

あなただけの直接Image::Sourceプロパティをバインドしている場合は、これを実現する唯一の方法は、カスタムIValueConverterである。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top