我在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}" />
有办法做到这一点吗?感谢
答案 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}" />