在WPF应用程序中,当您需要从ViewModel触发View元素的可见性时,基本上有两种方法:
boolclass ViewModel
{
public bool IsMyImageVisible { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图:
<Window.Resources>
<BooleanToVisibilityConverter x:Key="booleanToVisibility" />
</Window.Resources>
<Image Visibility="{Binding IsMyImageVisible, Converter={StaticResource booleanToVisibility}}" />
Run Code Online (Sandbox Code Playgroud)
Visibilityclass ViewModel
{
public Visibility MyImageVisibility { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图:
<Image Visibility="{Binding MyImageVisibility}" />
Run Code Online (Sandbox Code Playgroud)
"方法2"仍然符合MVVM标准吗?
我什么时候应该使用"方法1"?
编辑:改变问题,以减少意见为基础.
Kna*_*ģis 11
第二个选项将ViewModel绑定到特定技术(WPF).像某些Web框架这样的另一项技术将具有不同的Visibility枚举.您还可能需要将WPF引用添加到模型项目中,这对某些方案可能不是一个好主意(因为该项目的所有使用者现在也必须包含该引用).
如果您不需要ViewModel中的跨框架兼容性,那么您可以使用第二个,而没有任何其他缺点.