wpf Xamly確定ListBox.Items.Count是否> 0




(4)

在XAML中是否有辦法確定ListBox是否有數據?

如果沒有數據,我想將其IsVisibile屬性設置為false。


Answer #1

你可以使用ValueConverter和普通綁定來完成這項工作。

將可見性設置為:

Visibility = "{Binding myListbox.Items.Count, Converter={StaticResource VisibilityConverter}}"

然後設置轉換器以根據計數值返回Visibility.Collapsed等。


Answer #2
<ListBox.Style>
    <Style TargetType="ListBox">
        <Setter Property="Visibility" Value="Visible"/>
        <Style.Triggers>
            <Trigger Property="HasItems" Value="False">
                <Setter Property="Visibility" Value="Hidden"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</ListBox.Style>

Answer #3

在觸發器中執行它並且您不需要ValueConverter:

<ListBox>
  <ListBox.Style>
    <Style TargetType="{x:Type ListBox}">
      <Style.Triggers>
        <DataTrigger 
          Binding="Items.Count, {Binding RelativeSource={RelativeSource Self}}"
          Value="0">
          <Setter Property="Visibility" Value="Hidden" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </ListBox.Style>
</ListBox>

因此默認顯示ListBox,但如果Items.Count為0,則ListBox將被隱藏。


Answer #4

ListBox包含您可以綁定的HasItems屬性。 所以你可以這樣做:

<BooleanToVisibilityConverter x:Key="BooleanToVisibility" />
...
<ListBox 
    Visibility="{Binding HasItems, 
      RelativeSource={RelativeSource Self}, 
      Converter=BooleanToVisibility}" />

或者作為觸發器,因此您不需要轉換器:

<ListBox>
  <ListBox.Style>
    <Style TargetType="{x:Type ListBox}">
      <Setter Property="Visibility" Value="Visible" />
      <Style.Triggers>
        <DataTrigger 
            Binding="{Binding HasItems, RelativeSource={RelativeSource Self}}"
            Value="False">
          <Setter Property="Visibility" Value="Hidden" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </ListBox.Style>
</ListBox>

我沒有測試綁定,所以可能會有一些錯別字,但你應該得到這個想法。





listbox