Esta documentación está archivada y no tiene mantenimiento.

ViewBase (Clase)

Actualización: noviembre 2007

Representa la clase base para las vistas que definen la apariencia de los datos en un control ListView.

Espacio de nombres:  System.Windows.Controls
Ensamblado:  PresentationFramework (en PresentationFramework.dll)

public abstract class ViewBase : DependencyObject
public abstract class ViewBase extends DependencyObject
public abstract class ViewBase extends DependencyObject
Esta clase es abstracta; vea en Jerarquía de herencia las clases derivadas no abstractas utilizables en XAML.

El modo de vista GridView se deriva de la clase ViewBase. Normalmente, un control GridView se utiliza junto con el control ListView para colocar los datos en columnas. También puede utilizar la clase ViewBase para crear los modos de vista personalizados para ListView.

La propiedad View define el modo de vista utilizado por el control ListView.

En este ejemplo se muestra cómo crear un modo de View personalizado para un control ListView.

Debe utilizar la clase ViewBase al crear una vista personalizada para el control ListView. En el ejemplo siguiente se muestra un modo de vista que se denomina PlainView, derivado de la clase ViewBase.

public class PlainView : ViewBase
{    

  public static readonly DependencyProperty 
    ItemContainerStyleProperty =
    ItemsControl.ItemContainerStyleProperty.AddOwner(typeof(PlainView));

  public Style ItemContainerStyle
  {
      get { return (Style)GetValue(ItemContainerStyleProperty); }
      set { SetValue(ItemContainerStyleProperty, value); }
  }

  public static readonly DependencyProperty ItemTemplateProperty =
      ItemsControl.ItemTemplateProperty.AddOwner(typeof(PlainView));

  public DataTemplate ItemTemplate
  {
      get { return (DataTemplate)GetValue(ItemTemplateProperty); }
      set { SetValue(ItemTemplateProperty, value); }
  }

  public static readonly DependencyProperty ItemWidthProperty =
      WrapPanel.ItemWidthProperty.AddOwner(typeof(PlainView));

  public double ItemWidth
  {
      get { return (double)GetValue(ItemWidthProperty); }           
      set { SetValue(ItemWidthProperty, value); }
  }


  public static readonly DependencyProperty ItemHeightProperty =
      WrapPanel.ItemHeightProperty.AddOwner(typeof(PlainView));

  public double ItemHeight
  {
      get { return (double)GetValue(ItemHeightProperty); }
      set { SetValue(ItemHeightProperty, value); }
  }


  protected override object DefaultStyleKey
  {
      get 
      { 
        return new ComponentResourceKey(GetType(), "myPlainViewDSK"); 
      }
  }

}


Para aplicar un estilo a la vista personalizada, utilice la clase Style. En el ejemplo siguiente se define un estilo (Style) para el modo de vista PlainView. En el ejemplo anterior, este estilo se establece como el valor de la propiedad DefaultStyleKey que se define para PlainView.

<Style x:Key="{ComponentResourceKey 
      TypeInTargetAssembly={x:Type l:PlainView},
      ResourceId=myPlainViewDSK}" 
       TargetType="{x:Type ListView}" 
       BasedOn="{StaticResource {x:Type ListBox}}"
       >
  <Setter Property="HorizontalContentAlignment"
          Value="Center"/>
  <Setter Property="ItemContainerStyle" 
          Value="{Binding (ListView.View).ItemContainerStyle,
          RelativeSource={RelativeSource Self}}"/>
  <Setter Property="ItemTemplate" 
          Value="{Binding (ListView.View).ItemTemplate,
          RelativeSource={RelativeSource Self}}"/>
  <Setter Property="ItemsPanel">
    <Setter.Value>
      <ItemsPanelTemplate>
        <WrapPanel Width="{Binding (FrameworkElement.ActualWidth),
                   RelativeSource={RelativeSource 
                                   AncestorType=ScrollContentPresenter}}"
                   ItemWidth="{Binding (ListView.View).ItemWidth,
                   RelativeSource={RelativeSource AncestorType=ListView}}"
                   MinWidth="{Binding ItemWidth,
                   RelativeSource={RelativeSource Self}}"
                   ItemHeight="{Binding (ListView.View).ItemHeight,
                   RelativeSource={RelativeSource AncestorType=ListView}}"/>
      </ItemsPanelTemplate>
    </Setter.Value>
  </Setter>
</Style>


Para definir el diseño de los datos en un modo de vista personalizado, defina un objeto DataTemplate. En el ejemplo siguiente se define un objeto DataTemplate que se puede utilizar para mostrar datos en el modo de vista PlainView.

<DataTemplate x:Key="centralTile">
  <StackPanel Height="100" Width="90">
    <Grid Width="70" Height="70" HorizontalAlignment="Center">
      <Image Source="{Binding XPath=@Image}" Margin="6,6,6,9"/>
    </Grid>
    <TextBlock Text="{Binding XPath=@Name}" FontSize="13" 
               HorizontalAlignment="Center" Margin="0,0,0,1" />
    <TextBlock Text="{Binding XPath=@Type}" FontSize="9" 
               HorizontalAlignment="Center" Margin="0,0,0,1" />
  </StackPanel>
</DataTemplate>


En el ejemplo siguiente se muestra cómo definir una clave de recurso (ResourceKey) para el modo de vista PlainView que utiliza el objeto DataTemplate definido en el ejemplo anterior.

<l:PlainView x:Key="tileView" 
             ItemTemplate="{StaticResource centralTile}" 
             ItemWidth="100"/>


Un control ListView puede utilizar una vista personalizada si se establece la propiedad View en la clave de recurso. En el ejemplo siguiente se muestra cómo especificar PlainView como el modo de vista para ListView.

//Set the ListView View property to the tileView custom view
lv.View = lv.FindResource("tileView") as ViewBase;


Para obtener el ejemplo completo, vea Ejemplo ListView with Multiple Views.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0
Mostrar: