6 Stimmen

WPF DataGrid-Styling

Weiß jemand / haben ein Beispiel, wie man WPF DataGrid-Layout ändern, um so etwas wie Card-View oder etwas anderes, nicht nur Stapel von Zeilen sein?

0 Stimmen

Können Sie uns ein Beispiel für die Kartenansicht nennen?

0 Stimmen

Ja du kannst wenn du noch Interesse hast werde ich eine Antwort posten.

5voto

hughdbrown Punkte 45214

Das Ergebnis sieht wie folgt aus. Alt-Text http://iwebthereforeiam.com/files/ScreenShot.gif

Hier ist ein Code, der die Idee veranschaulichen soll.

XAML:

<Window x:Class="StackOverflow_545979.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:StackOverflow_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 StackOverflow_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"));
        }
    }
}

Die Klassen GreekGod und GreekGods wurden von Beispiele von Bea Stollnitz .

1 Stimmen

Sie haben die Vorlage für die ListBox geändert, aber die Frage bezog sich auf das DataGrid.

1 Stimmen

Ein Teil davon ist eine Empfehlung, dass Sie ListView anstelle von DataGrid verwenden. Und die beiden anderen Antwortenden haben ausdrücklich empfohlen, kein DataGrid, sondern ListView zu verwenden. Manchmal fragt man: "Wie kann ich X für Y verwenden?", und man bekommt zu hören: "Verwenden Sie nicht X für Y, sondern Z." Oft ist das der richtige Weg. Nach 30 Monaten mit dieser offenen Frage, was denken Sie?

0 Stimmen

Ich denke, wenn die Frage so formuliert ist: "Wie kann X gestylt werden?", dann sollte die Antwort lauten: "X kann auf diese und jene Weise gestylt werden (oder es kann nicht gestylt werden)". Wenn die Frage formuliert ist "Wie kann ich X machen?", dann kann man antworten "X kann mit Y oder Z gemacht werden".

1voto

Jarrett Meyer Punkte 18916

Versuchen Sie anstelle eines Datengitters eine Kombination aus Listview oder Listbox (je nachdem, welche Funktionalität Sie wünschen - beide leiten sich von ItemsSource ab) und Datenvorlagen zu verwenden. Beide sind Standard WPF, nicht Teil des Toolkits.

http://blah.winsmarts.com/2007-3-WPF__The_DataTemplate,_choosing_how_your_data_will_look_like.aspx

1voto

Bryan Anderson Punkte 15626

Ich weiß nicht, wie man es mit WPF Toolkit's DataGrid zu tun, und ich bezweifle, es ist, was Sie tatsächlich brauchen. Sie können es mit einer ListView oder ListBox tun. Setzen Sie ListView.View auf ein WrapPanel mit IsItemsSource="True". Verwenden Sie dann ein DataTemplate, um die Karten zu erstellen. Es gibt ein ziemlich gutes Beispiel, das Ihnen den größten Teil des Weges dorthin zeigen wird aquí .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X