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