仅当ListView不为空(有项目)时才使TextBox可见

时间:2017-07-26 18:07:00

标签: c# wpf listview mvvm textbox

我有一个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样式。那我怎么能这样做呢?

1 个答案:

答案 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>