-1

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

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

编辑:实际上是下面关于触发VisibilityIsReadOnly工作的答案,但我仍然希望看到一个概念上更好的答案!如果我更换TextBox相应的怎么办?TextBlock通过没有这些方便属性的元素?必须有一种比同时创建并隐藏其中一个更好的方法,这听起来不对...

4

2 回答 2

1

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

您也可以使用 aDataTemplateSelector来实现此目的。

于 2013-03-11T13:45:33.920 回答
1

您可以使用触发器来更改Visibility您的TextBlockTextBox使用BooleanToVisibilityConverter

于 2013-03-11T13:45:49.910 回答