2013-04-12 4 views
5

У меня есть два текстовых поля в gridview WPF. Второй скрыт с помощью метода на модели представления (GetNoteTwoVisibility), если нет текста для отображения - никаких проблем нет. В этом случае, хотя я бы хотел изменить диапазон столбцов в первом текстовом поле, чтобы использовать оба столбца. Я попытался добавить метод GetNoteOneColumnSpan (возвращающий int), но это не работает.WPF привязка к Grid.ColumnSpan

<TextBox Name="Note1" Grid.Column="0" Text="{Binding NotesView.NoteOne}" Grid.ColumnSpan="{Binding NotesView.GetNoteColumnSpan}" /> 
<TextBox Name="Note2" Grid.Column="1" Text="{Binding NotesView.NoteTwo}" Visibility="{Binding NotesView.GetNoteTwoVisibility}" /> 

Есть ли способ сделать это? Спасибо

ответ

7

Вам не нужно другое свойство связывания для Grid.ColumnSpan. Вы можете попробовать что-то вроде:

<TextBox Name="Note1" 
      Grid.Column="0" 
      Text="{Binding NotesView.NoteOne}"> 
    <TextBox.Style> 
    <Style TargetType="{x:Type TextBox}"> 
     <Setter Property="Grid.ColumnSpan" 
       Value="1" /> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding NotesView.GetNoteTwoVisibility}" 
         Value="False"> 
      <Setter Property="Grid.ColumnSpan" 
        Value="2" /> 
     </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </TextBox.Style> 
</TextBox> 
<TextBox Name="Note2" 
      Grid.Column="1" 
      Text="{Binding NotesView.NoteTwo}" 
      Visibility="{Binding NotesView.GetNoteTwoVisibility}" /> 
+0

, который отлично работает (как только я вспомнил, что мой метод Видимости возвратил перечисление видимости, а не bool!), Спасибо. – Nick

+0

Ваш прием. Я надеюсь, что у вас есть причина наличия свойства System.Windows.Visibility в вашей модели ViewModel, чем использование значения bool в ViewModel и использование конвертера в xaml. – Viv

+0

Нет причин, догадаться, что это только то, как было написано приложение, будет использовать конвертеры, хотя, если это лучше, спасибо – Nick

Смежные вопросы