WPF绑定到Grid.ColumnSpan

时间:2013-04-12 12:02:09

标签: wpf grid wcf-binding

我在WPF网格视图中有两个文本框。如果没有要显示的文本,则使用视图模型上的方法(GetNoteTwoVisibility)隐藏第二个 - 没有问题。在这种情况下,虽然我想更改第一个文本框的列跨度以使用两个列。我尝试添加'GetNoteOneColumnSpan'方法(返回一个int),但这不起作用。

<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}" />

有办法做到这一点吗?感谢

1 个答案:

答案 0 :(得分: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}" />