我有一个WPF TextBox,我希望只有在ListView有项目时才能看到它。如果ListView为空(没有项目),那么我想隐藏TextBox。
在我的TextBox下面,请注意这已经分配了一个样式:
<TextBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"
Height="20" Width="200"
Style="{StaticResource WatermarkedTextBox}"/>
我不想触及现有的样式WatermarkedTextBox
所以我想在TextBox中使用BasedOn样式。那我怎么能这样做呢?
答案 0 :(得分:4)
使用标记语法。 ListView具有bool HasItems
属性。使用转换器将TextBox Visibility
绑定到ListView.HasItems
(Bool2Vis是在参考资料中声明的BooleanToVisibilityConverter
实例)
<TextBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"
Height="20" Width="200">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource WatermarkedTextBox}">
<Setter Property="Visibility"
Value="{Binding ElementName=MyListView, Path=HasItems, Converter={StaticResource Bool2Vis}}"/>
</Style>
</TextBox.Style>
</TextBox>