c#中条件显示图像

时间:2017-04-06 12:34:42

标签: c# wpf triggers ivalueconverter

我目前正在尝试条件显示图像。我读了很多关于valueConverters和触发器的内容,但我坚信必须有一个更容易解决这个简单问题的方法。

XAML:

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

背后的代码:

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

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

    }
}

我使用整数 i 来查看图像是否显示。任何建议都非常有用!

2 个答案:

答案 0 :(得分:7)

将图片的public enum ProjectVersion { //add your existing code //Add fromString method to convert string to enum public static ProjectVersion fromString(String input) { for (ProjectVersion projectVersion : ProjectVersion.values()) { if (projectVersion.version.equals(input)) { return projectVersion; } } return null; } } 绑定到IsOn并使用内置的Visibility

BooleanToVisibilityConverter

然后将<Image Source="C:\Users\Niko\Pictures\red.png" Visibility="{Binding Visibility, Converter={StaticResource BoolToVis}}"/> 作为静态资源添加到BooleanToVisibilityConverter仅用于该窗口,或<Window.Resources>用于整个应用程序。

<Application.Resources>

请注意,<BooleanToVisibilityConverter x:Key="BoolToVis"/> 是您在StaticResource之后引用转换器的名称。

答案 1 :(得分:4)

如果您不想在Visibility中添加ViewModel财产并且不想使用转换器,则可以使用DataTrigger(此处为根本没有ViewModel,如果选中ToggleButton,则图片可见:

<Image Source="C:\Users\Niko\Pictures\red.png">
        <Image.Style>
            <Style TargetType="{x:Type Image}">
                <Setter Property="Visibility"
                        Value="Visible" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsChecked, ElementName=tg}"
                                 Value="False">
                        <Setter Property="Visibility"
                                Value="Hidden" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Image.Style>
    </Image>

    <ToggleButton Name="tg" Content="Show" HorizontalAlignment="Left" VerticalAlignment="Bottom" />