2013-04-12 11 views
5

Ich habe zwei Textfelder in einer WPF-Gridview. Die zweite Methode wird mit einer Methode im View-Modell (GetNoteTwoVisibility) ausgeblendet, wenn dort kein Text angezeigt wird - kein Problem. In diesem Fall möchte ich jedoch die Spaltenspanne des ersten Textfelds ändern, um beide Spalten zu verwenden. Ich habe versucht, eine "GetNoteOneColumnSpan" -Methode (Rückgabe eines int) hinzuzufügen, aber das funktioniert nicht.WPF-Bindung an 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}" /> 

Gibt es eine Möglichkeit, dies zu tun? Danke

Antwort

7

Sie benötigen keine weitere Bindungseigenschaft für Grid.ColumnSpan. Sie könnten versuchen, etwas wie:

<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

das funktioniert perfekt (einmal erinnerte ich mich an meine Sichtbarkeitsmethode zurückgegeben eine Sichtbarkeit enum und nicht ein Bool!), Danke. – Nick

+0

Ihre Begrüßung. Ich hoffe, dass Sie einen Grund haben, die System.Windows.Visibility-Eigenschaft in Ihrem ViewModel zu haben, anstatt einen bool-Wert im ViewModel zu verwenden und einen Konverter in xaml zu verwenden. – Viv

+0

Kein Grund, denke, es ist nur, wie die App geschrieben wurde, wird in Verwendung von Konvertern aussehen, wenn das besser ist, danke – Nick