2010-03-15 62 views
15

任何人都可以建議顯示文本塊(帶有諸如「List Empty」之類的文本)的最佳方式,以便將其可見性綁定到Items.Count。WPF列表框 - 空列表顯示消息

我已經嘗試了下面的代碼,不能讓它工作,所以認爲我必須做錯了。

<ListBox x:Name="lstItems" 
     ItemsSource="{Binding ListItems}"> 
    </ListBox> 
    <TextBlock Margin="4" FontStyle="Italic" FontSize="12" Text="List is empty" Visibility="Collapsed"> 
     <TextBlock.Style> 
      <Style TargetType="{x:Type TextBlock}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=lstItems, Path=Items.Count}" Value="0"> 
         <Setter Property="Visibility" Value="Visible" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style>        
     </TextBlock.Style> 
    </TextBlock> 

回答

26

代碼中的問題是,在文本塊中設置可見性的值比在樣式中設置它的優先級高。所以,即使發生觸發,觸發器內的設置也不起作用。更改XAML到:

<TextBlock Margin="4" FontStyle="Italic" FontSize="12" Text="List is empty" > 
    <TextBlock.Style> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Setter Property="Visibility" Value="Collapsed" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=lstItems, Path=Items.Count}" Value="0"> 
        <Setter Property="Visibility" Value="Visible" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style>        
    </TextBlock.Style> 
    </TextBlock> 

當能見度的設置是所有的風格和它的作品(至少在我的示範項目)。

+0

謝謝,這解決了我的問題(和我的理解:))完全 – 2010-03-15 14:07:44

+1

@DavidWard:http://msdn.microsoft.com/en-us/library/ms743230.aspx – Will 2012-08-07 15:07:16