WPF DataGrid

DataGrids eigenen sich hervorragend zum Anzeigen von Daten. Hier zeige ich ein paar Beispiele, wie Ihr in WPF mit dem DataGrid Objekt arbeiten könnt.

Datenquelle (ItemsSource) zuweisen

Das Zuweisen einer Quelle für das DataGrid Objekt kann über XAML oder im Code (code behind) erfolgen.

ItemsSource via XMAL

Je nachdem wo sich die zu bindende Quelle befindet, kann folgendes Beispiel abweichen. Im aktuellen Beispiel ist die Quelle eine ObservableCollection vom Typ User.

ItemsSource="{Binding Path=Users, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Page}}
#region PUBLIC_PROPERTIES 
public ObservableCollection<User> Users 
{ get; set; } 
#endregion 

Benutzerdefinierte Spalten

Spalte zum Anzeigen von Bildern

Um eine Spalte zu erstellen, welches ein Bild anzeigt, muss ein neues DataGridTemplateColumn erstellt werden.
Ein Beispiel finden Sie folgend:

<DataGridTemplateColumn Header="Image" Width="80"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Image Source="{Binding Path=Image.Source}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn>

Wenn Ihr Objekt nicht direkt das Bild enthält, so können Sie dies auch mit einem Converter lösen. Siehe Beispiel:

public class UriToImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            Uri i = value as Uri;
            if (i != null)
                BitmapImage im = new BitmapImage();            
                try
                {
                    im.BeginInit();
                    im.UriSource = i;
                    im.EndInit();
                }
                catch(Exception)
                {
                    return null;
                }            
                return im;
            else
                return null;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotSupportedException();
        }
    }

Implementieren Sie dann den Converter in Ihrer XAML Struktur.

<Image Source="{Binding Path=Sparepart.Image, Converter={StaticResource UriToImageConverter}, UpdateSourceTrigger=Default}" />
<!-- Im Header einbinden --> 
<Page.Resources> 
<local:UriToImageConverter x:Key="UriToImageConverter"/> 
</Page.Resources>

Textspalten

Normale Spalten, welche einen Text anzeigen, könnt Ihr wie folgt erstellen:

<DataGridTextColumn Header="Vorname" Binding="{Binding Firstname}"/> <DataGridTextColumn Header="Nachname" Binding="{Binding Lastname}"/>

Wenn Ihr eine Auswahlbox (ComboBox) als Spalte einfügen wollt, so könnt Ihr dieses Beispiel verwenden.

<DataGridComboBoxColumn Header="OE" SelectedValueBinding="{Binding OE}" >
 <DataGridComboBoxColumn.ElementStyle> <Style TargetType="{x:Type ComboBox}"> <Setter Property="ItemsSource" Value="{Binding Path=OEs, RelativeSource={RelativeSource AncestorType={x:Type Page}}}" /> </Style> </DataGridComboBoxColumn.ElementStyle> <DataGridComboBoxColumn.EditingElementStyle> <Style TargetType="{x:Type ComboBox}"> <Setter Property="ItemsSource" Value="{Binding Path=OEs, RelativeSource={RelativeSource AncestorType={x:Type Page}}}" /> </Style>
 </DataGridComboBoxColumn.EditingElementStyle> </DataGridComboBoxColumn>

Was this article helpful?

Related Articles

Leave A Comment?

This site uses Akismet to reduce spam. Learn how your comment data is processed.