В моем приложении WPF у моего Viewmodel есть логическое свойство IsOwnerOf
и строковое свойство Title
. Если IsOwner==false
, я хочу, чтобы TextBlock
отображал Title
(потому что, если вы не являетесь владельцем, вы не сможете его отредактировать), и если IsOwner==true
, я хочу, чтобы TextBox
отображал Title
- очевидно, там же, на вид.Показать TextBox или TextBlock в зависимости от значения флага
Также я не хочу, чтобы это было codebehind, так как я следую шаблону MVVM. Мысль о Style.Triggers
, но с ними я могу влиять только на атрибуты элемента, а не на сам элемент, или я могу?
EDIT: Практически ответы ниже касаются срабатывания Visibility
или IsReadOnly
, но я все еще хотел бы получить концептуально лучший ответ! Что делать, если я заменю TextBox
соответственно. TextBlock
элементами, которые не обладают этими удобными свойствами? Там должно быть лучше, чем создавать как и прячась один из них, что просто не звучит ...
Вы только что рассмотрели TextBox и связать ReadOnly свойство! IsOwnerOf http://msdn.microsoft.com/en-us /library/system.windows.forms.textboxbase.readonly(v=vs.100).aspx – Paparazzi
Вы можете привязать видимость своих элементов управления к логическому свойству. Вот статья, которая поможет вам http://www.rhyous.com/2011/02/22/binding-visibility-to-a-bool-value-in-wpf/ –
Пожалуйста, разместите свою разметку * и * модель представления. Кроме того, прочитайте эту статью, чтобы помочь вам понять, почему есть определенные части на вопрос, который должен существовать (http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question .aspx). –