Hallo zusammen!
Ich habe mir ein kleines Testprojekt mit Datagrid und Binding an eine Datatable erstellt. soweit funktioniert es auch. Hier mal der funktionierende Code:
XAML
Als nächstes soll ein CollectionViewSource mit dazu, um die Daten sortieren und filtern zu können. Leider bin ich mit den Beeispielen aus dem Internet nicht sehr weit gekommen. Von der Seite nach der mein funktionierender Code nach gebildet ist stammt auch folgendes. War aber in C# und ich hab das übersetzten lassen.
Eigentlich dachte ich man müsste nur die CollectionViewSource an die Tabelle binden und das Datagrid dann wiederum an an die CollectionViewSource. Scheinbar ist das wohl irgenwie komplizierter. Ich verstehe auch nicht was in der Zeile mit der Fehlermeldung überhaupt passieren soll.
Kann mit jemand helfen ein CollectionViewSource in den funktionierenden Teil meines Codes einzubinden? Es wäre schön, wenn die Lösung nicht komplett von dem ursprünglichen Konzept abweicht, weil das halbwegs verstanden habe.
Gruß
eddi
Ich habe mir ein kleines Testprojekt mit Datagrid und Binding an eine Datatable erstellt. soweit funktioniert es auch. Hier mal der funktionierende Code:
XAML
XML-Quellcode
- <Window x:Class="MainWindow"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:local="clr-namespace:Binding_Datatable"
- mc:Ignorable="d"
- Title="MainWindow" Height="450" Width="800">
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition/>
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="57*"/>
- <RowDefinition Height="13*"/>
- </Grid.RowDefinitions>
- <DataGrid x:Name="Timer_DataGrid1" ItemsSource="{Binding}" />
- <Button x:Name="Butt" Content="Zeilen einfügen" Margin="25,26.6,658.6,10" Grid.Row="1" />
- <Button x:Name="Butt2" Content="laden" Margin="195,26.6,486.6,10" Grid.Row="1" />
- <Button x:Name="Butt3" Content="speichern" Margin="371,26.6,308.6,10" Grid.Row="1" />
- </Grid>
- </Window>
XML-Quellcode
- Imports System.Data
- Class MainWindow
- Private Timer_Tabelle As New Timer_KL 'Timer_KL ist die Klasse
- Public Sub New()
- ' Dieser Aufruf ist für den Designer erforderlich.
- InitializeComponent()
- ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
- Timer_DataGrid1.DataContext = Timer_Tabelle.Timer.DefaultView 'die Tabelle dem DataGrid zuweisen, Dazu ist im XAML das ItemsSource="{Binding}" nötig
- End Sub
Als nächstes soll ein CollectionViewSource mit dazu, um die Daten sortieren und filtern zu können. Leider bin ich mit den Beeispielen aus dem Internet nicht sehr weit gekommen. Von der Seite nach der mein funktionierender Code nach gebildet ist stammt auch folgendes. War aber in C# und ich hab das übersetzten lassen.
XML-Quellcode
- <Window x:Class="MainWindow"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:local="clr-namespace:Binding_Datatable"
- mc:Ignorable="d"
- Title="MainWindow" Height="450" Width="800">
- <Window.Resources>
- <CollectionViewSource x:Key="itemCollectionViewSource" CollectionViewType="ListCollectionView"/>
- </Window.Resources>
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition/>
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="57*"/>
- <RowDefinition Height="13*"/>
- </Grid.RowDefinitions>
- <DataGrid x:Name="Timer_DataGrid1" ItemsSource="{Binding}" DataContext="{StaticResource itemCollectionViewSource}" />
- <Button x:Name="Butt" Content="Zeilen einfügen" Margin="25,26.6,658.6,10" Grid.Row="1" />
- <Button x:Name="Butt2" Content="laden" Margin="195,26.6,486.6,10" Grid.Row="1" />
- <Button x:Name="Butt3" Content="speichern" Margin="371,26.6,308.6,10" Grid.Row="1" />
- </Grid>
- </Window>
XML-Quellcode
- Imports System.Data
- Class MainWindow
- Private Timer_Tabelle As New Timer_KL 'Timer_KL ist die Klasse
- Public Sub New()
- 'Dieser Aufruf ist für den Designer erforderlich.
- InitializeComponent()
- ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
- Dim itemCollectionViewSource As CollectionViewSource
- itemCollectionViewSource = CType((FindResource("ItemCollectionViewSource")), CollectionViewSource) 'HIER GIBTS NE FEHLERMELDUNG
- itemCollectionViewSource.Source = Timer_Tabelle.Timer
- Timer_DataGrid1.DataContext = itemCollectionViewSource
- End Sub
Eigentlich dachte ich man müsste nur die CollectionViewSource an die Tabelle binden und das Datagrid dann wiederum an an die CollectionViewSource. Scheinbar ist das wohl irgenwie komplizierter. Ich verstehe auch nicht was in der Zeile mit der Fehlermeldung überhaupt passieren soll.
Kann mit jemand helfen ein CollectionViewSource in den funktionierenden Teil meines Codes einzubinden? Es wäre schön, wenn die Lösung nicht komplett von dem ursprünglichen Konzept abweicht, weil das halbwegs verstanden habe.
Gruß
eddi