根据标志的值显示文本框或文本块
本文关键字:文本 显示 标志 | 更新日期: 2023-09-27 18:03:24
在我的WPF应用程序中,我的Viewmodel有一个布尔属性IsOwnerOf
和一个字符串属性Title
。如果IsOwner==false
,我想要一个TextBlock
显示Title
(因为如果你不是所有者,你不应该能够编辑它),如果IsOwner==true
,我想要一个TextBox
显示Title
-显然在视图中的同一位置。
我也不想做代码后,因为我遵循MVVM模式。考虑到Style.Triggers
,但是使用它们我只能影响元素的属性,而不是元素类型本身,或者我可以吗?
编辑:实际上,下面关于触发Visibility
或IsReadOnly
的答案是有效的,但我仍然希望看到一个概念上更好的答案!如果我替换TextBox
resp。TextBlock
的元素没有这些方便的属性?肯定有比两者都创造并隐藏其中一个更好的方法,这听起来不太对……
最简单的选择是始终删除TextBox
并将其IsEnabled
或IsReadOnly
属性绑定到IsOwner
标志。
您也可以使用DataTemplateSelector
来实现这一点
您可以使用触发器使用BooleanToVisibilityConverter
更改TextBlock
和TextBox
的Visibility