5

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

有没有办法做到这一点?谢谢

4

1 回答 1

8

您不需要另一个绑定属性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}" />
于 2013-04-12T12:13:09.443 回答