2011-02-07 8 views
5

siguiente es la sintaxis para mi vista de lista que se enganchan a una clase ....muestra parte del texto cuando la vista de lista binded no tiene elementos

<ListView ItemContainerStyle="{StaticResource listViewStyle}" Name="transactionListView" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding}" MouseDoubleClick="transactionListView_MouseDoubleClick" IsSynchronizedWithCurrentItem="True" > 
    <ListView.View> 
     <GridView ColumnHeaderContainerStyle="{StaticResource gridViewHeaderColumnStyle}"> 
      <GridView.Columns> 
       <GridViewColumn Width="70" Header="Serial" DisplayMemberBinding="{Binding Path=Serial}" /> 
       <GridViewColumn Width="100" Header="Date" DisplayMemberBinding="{Binding Path=Date, StringFormat={}{0:dd-MM-yyyy}}" /> 
       <GridViewColumn Width="200" Header="Seller" DisplayMemberBinding="{Binding Path=Seller}" /> 
       <GridViewColumn Width="200" Header="Buyer" DisplayMemberBinding="{Binding Path=Buyer}" /> 
       <GridViewColumn Width="70" Header="Bales" DisplayMemberBinding="{Binding Path=Bales}" /> 
      </GridView.Columns> 
     </GridView> 
    </ListView.View> 
</ListView> 

* ¿Cómo puedo mostrar algún texto cuando la lista está vacía o contener ¿No hay artículos?

Respuesta

16

El truco está en anular la plantilla de ListView. Cuando no hay elementos en ListView que puede establecer su ControlTemplate con TextBlock:

<ListView Name="List" ItemsSource="{Binding Items}"> 
    <ListView.Style> 
     <Style TargetType="ListView"> 
      <Style.Triggers> 
       <Trigger Property="HasItems" 
         Value="False"> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="ListView"> 
           <TextBlock Text="No items..."/> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListView.Style> 
</ListView> 
+1

Solo hay un pequeño problema ... oculta el encabezado gridviewcolumns ... de todos modos lo veré e intentaré asegurarme de que este estilo se pueda aplicar a listviewitem y no a la lista en sí ... –

+0

Lo primero ha venido a la mente: declaración de lista de lista duplicada (sin ItemsSource, pero con ListView.View) antes de TextBlock a ControlTemplate (debe envolverlos con StackPanel, para exapmle). –

+0

No se puede lograr el resultado deseado :-( –

2

ListView en sí mismo no proporciona esta funcionalidad. El enfoque más simple es colocar un TextBlock frente al ListView con su Visibilidad establecida en Contraído. Puede hacer que sea visible cuando su lista no tenga elementos.

Si necesita ayuda con lo específico, por favor expanda su pregunta.

+0

supongo que esta es la manera de hacerlo, pero no soy capaz de entender en cuanto a donde debo insertar el texblock en código anterior y cómo lograr esto. –

Cuestiones relacionadas