根据Flag的值显示TextBox或TextBlock

时间:2013-03-11 13:41:40

标签: c# wpf triggers

在我的WPF应用程序中,我的Viewmodel有一个布尔属性IsOwnerOf和一个字符串属性Title。如果IsOwner==false,我希望TextBlock显示Title(因为如果您不是所有者,则无法对其进行编辑),如果IsOwner==true,我希望TextBox显示Title - 显然位于视图中的同一位置。

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

编辑: 实际上下面关于触发VisibilityIsReadOnly的答案,但我仍然希望看到一个概念上更好的答案!如果我替换TextBox resp怎么办? TextBlock由没有这些方便属性的元素组成?必须有一个更好的方法,而不是创建它们并隐藏其中一个,这听起来不对......

2 个答案:

答案 0 :(得分:1)

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

您也可以使用DataTemplateSelector来实现此目标。

答案 1 :(得分:1)

您可以使用触发器使用Visibility

更改TextBlockTextBox的{​​{1}}