在我的WPF应用程序中,我的Viewmodel有一个布尔属性IsOwnerOf
和一个字符串属性Title
。如果IsOwner==false
,我希望TextBlock
显示Title
(因为如果您不是所有者,则无法对其进行编辑),如果IsOwner==true
,我希望TextBox
显示Title
- 显然位于视图中的同一位置。
此外,我不想做代码隐藏,因为我遵循MVVM模式。考虑Style.Triggers
,但是对它们我只能影响元素的属性,而不是元素类型本身,或者我可以吗?
编辑:
实际上下面关于触发Visibility
或IsReadOnly
的答案,但我仍然希望看到一个概念上更好的答案!如果我替换TextBox
resp怎么办? TextBlock
由没有这些方便属性的元素组成?必须有一个更好的方法,而不是创建它们并隐藏其中一个,这听起来不对......
答案 0 :(得分:1)
最简单的选择是始终删除TextBox
并将其IsEnabled
或IsReadOnly
属性绑定到IsOwner
标记。
您也可以使用DataTemplateSelector
来实现此目标。
答案 1 :(得分:1)
您可以使用触发器使用Visibility
TextBlock
和TextBox
的{{1}}