Search code examples
c#wpftriggersivalueconverter

Conditional display of image in c#


I am currently trying to conditionaly display an image. I read quite a bit about valueConverters and triggers, but i strongly believe that there has to be an easier solution for this easy problem.

The XAML:

 <Image Source="C:\Users\Niko\Pictures\red.png" IsEnabled="{Binding IsOn}"></Image>

The code behind:

namespace MVVM {
public class Globals
{
    int i = 2;

    public bool IsOn
    {
        get
        {
            if (i == 1 )
                return true;
            else
                return false;
        }

    }
}

I played around with the integer i to see if the image gets displayed or not. Any advice is greatly apreciated!


Solution

  • Bind the Image's Visibility to IsOn and use the built in BooleanToVisibilityConverter.

    <Image Source="C:\Users\Niko\Pictures\red.png" Visibility="{Binding Visibility, Converter={StaticResource BoolToVis}}"/>
    

    Then add the BooleanToVisibilityConverter as a static resource in either the <Window.Resources> for just that window or <Application.Resources> for your whole application.

    <BooleanToVisibilityConverter x:Key="BoolToVis"/>
    

    Note that x:Key is the name that you use to reference the converter after StaticResource.