根据标志的值显示文本框或文本块

本文关键字:文本 显示 标志 | 更新日期: 2023-09-27 18:03:24

在我的WPF应用程序中,我的Viewmodel有一个布尔属性IsOwnerOf和一个字符串属性Title。如果IsOwner==false,我想要一个TextBlock显示Title(因为如果你不是所有者,你不应该能够编辑它),如果IsOwner==true,我想要一个TextBox显示Title -显然在视图中的同一位置。

我也不想做代码后,因为我遵循MVVM模式。考虑到Style.Triggers,但是使用它们我只能影响元素的属性,而不是元素类型本身,或者我可以吗?

编辑:实际上,下面关于触发VisibilityIsReadOnly的答案是有效的,但我仍然希望看到一个概念上更好的答案!如果我替换TextBox resp。TextBlock的元素没有这些方便的属性?肯定有比两者都创造并隐藏其中一个更好的方法,这听起来不太对……

根据标志的值显示文本框或文本块

最简单的选择是始终删除TextBox并将其IsEnabledIsReadOnly属性绑定到IsOwner标志。

您也可以使用DataTemplateSelector来实现这一点

您可以使用触发器使用BooleanToVisibilityConverter更改TextBlockTextBoxVisibility