c#中图像的条件显示

Conditional display of image in c#

我目前正在尝试有条件地显示图像。我读了很多关于 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 来查看图像是否显示。非常感谢任何建议!

将图像的 Visibility 绑定到 IsOn 并使用内置的 BooleanToVisibilityConverter

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

然后将 BooleanToVisibilityConverter 作为静态资源添加到 window 的 <Window.Resources> 或整个应用程序的 <Application.Resources> 中。

<BooleanToVisibilityConverter x:Key="BoolToVis"/>

请注意,x:Key 是您在 StaticResource 之后用来引用转换器的名称。

如果您不想在 ViewModel 中放置 Visibility 属性 并且不想使用转换器,您可以使用 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" />