style - WPF DataGrid Styling
datagridtemplatecolumn style (3)
¿Alguien sabe / tiene un ejemplo de cómo cambiar el diseño WPF DataGrid para que sea algo así como la vista de tarjeta o cualquier otra cosa, no solo la pila de filas?
En lugar de una cuadrícula de datos, intente usar una combinación de una vista de lista o lista (dependiendo de la funcionalidad que desee, ambas derivan de ItemsSource) y plantillas de datos. Ambos son WPF estándar, no forman parte del kit de herramientas.
http://blah.winsmarts.com/2007-3-WPF__The_DataTemplate,_choosing_how_your_data_will_look_like.aspx
No sé cómo hacerlo con DataGrid de WPF Toolkit y dudo que sea lo que realmente necesita. Puedes hacerlo con un ListView o ListBox. Establezca ListView.View en un WrapPanel con IsItemsSource = "True". Luego usa un DataTemplate para hacer las cartas. Hay un buen ejemplo que te llevará la mayor parte del camino hasta aquí .
El resultado se ve así. texto alternativo http://iwebthereforeiam.com/files/ScreenShot.gif
Aquí hay un código que debe demostrar la idea.
XAML:
<Window x:Class="_545979.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:_545979"
xmlns:debug="clr-namespace:System.Diagnostics;assembly=System"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<local:GreekGods x:Key="GreekGods"/>
<DataTemplate x:Key="itemTemplate">
<Border BorderBrush="RoyalBlue" BorderThickness="2" Margin="2" Padding="5">
<WrapPanel Orientation="Vertical">
<TextBlock Width="200" Text="{Binding Path=Name}"/>
<TextBlock Width="200" Text="{Binding Path=Description}"/>
<TextBlock Width="200" Text="{Binding Path=RomanName}"/>
</WrapPanel>
</Border>
</DataTemplate>
</Window.Resources>
<ListBox ItemTemplate="{StaticResource itemTemplate}"
ItemsSource="{StaticResource GreekGods}" />
</Window>
C # code:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace _545979
{
public class GreekGod
{
public string Name { get; set; }
public string Description { get; set; }
public string RomanName { get; set; }
public GreekGod() { }
public GreekGod(string name, string description, string romanName)
{
this.Name = name;
this.Description = description;
this.RomanName = romanName;
}
}
public class GreekGods : ObservableCollection<GreekGod>
{
public GreekGods()
{
this.Add(new GreekGod("Aphrodite", "Goddess of love, beauty and fertility", "Venus"));
this.Add(new GreekGod("Apollo", "God of prophesy, music and healing", "Apollo"));
this.Add(new GreekGod("Ares", "God of war", "Mars"));
this.Add(new GreekGod("Artemis", "Virgin goddess of the hunt", "Diana"));
this.Add(new GreekGod("Athena", "Goddess of crafts and the domestic arts", "Athena"));
this.Add(new GreekGod("Demeter", "Goddess of agriculture", "Ceres"));
this.Add(new GreekGod("Dionysus", "God of wine", "Bacchus"));
this.Add(new GreekGod("Hephaestus", "God of fire and crafts", "Vulcan"));
this.Add(new GreekGod("Hera", "Goddess of marriage", "Juno"));
this.Add(new GreekGod("Hermes", "Messenger of the Gods", "Mercury"));
this.Add(new GreekGod("Poseidon", "God of the sea, earthquakes and horses", "Neptune"));
this.Add(new GreekGod("Zeus", "Supreme God of the Olympians", "Jupiter"));
}
}
}
Las clases de GreekGod y GreekGods surgieron de los ejemplos de Bea Stollnitz .