2013-04-12 15 views
5

WPFグリッドビューに2つのテキストボックスがあります。表示するテキストがない場合は、ビューモデル(GetNoteTwoVisibility)のメソッドを使用して2番目のメソッドを非表示にします。問題はありません。この場合、最初のテキストボックスの列幅を両方の列を使用するように変更したいと思います。私は 'GetNoteOneColumnSpan'メソッド(intを返す)を追加しようとしましたが、これは動作しません。WPF with 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

私のVisibilityメソッドが可視性の列挙型でboolではないことを覚えていれば、これは完璧に動作します。 – Nick

+0

ようこそ。 ViewModelのSystem.Windows.Visibilityプロパティを持つ理由がViewModelのbool値を使用し、xamlのコンバータを使用するよりも望ましいと思います。 – Viv

+0

それはちょうど、アプリケーションが書かれた方法だと思う、それがより良い練習であるならば、コンバータの使用に見えるでしょう – Nick

関連する問題