Laden...

WPF DataGrid in Windows Forms

Erstellt von Tommy111 vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.515 Views
T
Tommy111 Themenstarter:in
5 Beiträge seit 2012
vor 11 Jahren
WPF DataGrid in Windows Forms

Hallo Zusammen,
als erstes ich war mir nicht sicher in welches Forum das gehört hab mich jetzt mal für das WPF-Forum entschieden ....

Mein Problem ist folgendes ....
ich habe eine Forms Anwendung in der ich ein WPF-DataGrid nutzen möchte da ich Eigenschaften wie das Grouping etc. nutzen möchte.
Das "einbinden" über den Elementhost hat auch wunderbar funktioniert i bekomme die Daten auch von einer SQL DB "gebindet" so:


dataGrid1.ItemsSource = Mapper.Map<IList<EquipmentObject>, SortableBindingList<EquipmentDTO>>(equipmentObjects); 

allerdings funktioniert das Grouping nicht.
Ich weiß das es dazu viele Bsp. gibt hab die auch alle durchgearbeitet allerdings funktioniert es bei mir einfach nicht....
ich bekomme die Daten einfach nicht "gegroupt" und wenn ich das Binding über die
ObservableCollection also so:


   ObservableCollection<EquipmentObject> equipCollection = new ObservableCollection<EquipmentObject>(equipmentObjects);

            ListCollectionView equipments = new ListCollectionView(equipCollection);
            equipments.GroupDescriptions.Add(new PropertyGroupDescription("description"));

            dataGrid1.ItemsSource = equipCollection;

mache funktioniert das binding nicht mehr und dementsprechend das Groupuing natürlich auch nicht.

Hier noch mein XAML code

 <UserControl x:Class="EE_ASAP_MMV.DataGrid"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="426" d:DesignWidth="666">

    <DataGrid Name="dataGrid1" AutoGenerateColumns="False" Height="430" Width="855" AlternatingRowBackground="#efefef" AlternationCount="2" ItemsSource="{Binding GroupedCustomers}">
        <Style d:key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type GroupItem}">
                        <Expander x:Name="exp" IsExpanded="True" Background="White" Foreground="Black">
                            <Expander.Header>
                                <TextBlock Text="{Binding Name}"/>
                            </Expander.Header>
                            <ItemsPresenter />
                        </Expander>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <DataGrid.Columns>
            <DataGridTextColumn Header="ID" Width="50" Binding="{Binding id}"/>
            <DataGridTextColumn Header="Beschreibung" Width="100" Binding="{Binding description}"/>
            <DataGridTextColumn Header="Hersteller" Width="100" Binding="{Binding vendor}"/>
            <DataGridTextColumn Header="Typ" Width="100" Binding="{Binding typ}"/>
            <DataGridTextColumn Header="Messbereich" Width="200" Binding="{Binding measurementRange}"/>
            <DataGridTextColumn Header="Kalibrierintervall" Width="100" Binding="{Binding calibrationInterval}"/>
        </DataGrid.Columns>

        <DataGrid.GroupStyle>
            <GroupStyle>
                <GroupStyle.ContainerStyle>
                    <Style TargetType="{x:Type GroupItem}">
                        <Setter Property="Margin" Value="0,0,0,5"/>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type GroupItem}">
                                    <Expander IsExpanded="True" Background="#FF112255" BorderBrush="#FF002255" Foreground="#FFEEEEEE" BorderThickness="1,1,1,5">
                                        <Expander.Header>
                                            <DockPanel>
                                                <TextBlock FontWeight="Bold" Text="{Binding Path=Name}" Margin="5,0,0,0" Width="100"/>
                                                <TextBlock FontWeight="Bold" Text="{Binding Path=ItemCount}"/>
                                            </DockPanel>
                                        </Expander.Header>
                                        <Expander.Content>
                                            <ItemsPresenter />
                                        </Expander.Content>
                                    </Expander>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </GroupStyle.ContainerStyle>
            </GroupStyle>      
        </DataGrid.GroupStyle>
    </DataGrid>
</UserControl>

Vielen Dank schon mal im vor raus wenn jemandem auffällt was i falsch gemacht habe!
LG Tommy

6.862 Beiträge seit 2003
vor 11 Jahren

Hallo,

... und wenn ich das Binding über die
ObservableCollection also so:

  
   ObservableCollection<EquipmentObject> equipCollection = new ObservableCollection<EquipmentObject>(equipmentObjects);  
  
            ListCollectionView equipments = new ListCollectionView(equipCollection);  
            equipments.GroupDescriptions.Add(new PropertyGroupDescription("description"));  
  
            dataGrid1.ItemsSource = equipCollection;  

mache funktioniert das binding nicht mehr und dementsprechend das Groupuing natürlich auch nicht.

Da ist doch gar kein Binding involviert? Das ist doch ne einfache Zuweisung der Daten. Wie dem auch sei, du erstellst zwar ne CollectionView mit dem Grouping, aber verwendest sie doch gar nicht. Du nutzt ja die AusgangsCollection. Das kann dann natürlich nicht tun.

Baka wa shinanakya naoranai.

Mein XING Profil.