Как конвертировать DataTable в IEnumerable
С помощью Binding вытянуть данные элемента из плитки и вставить в ItemsControl, но столкнулся с проблемой, данные из бд загружаю в плитку с помощью DataView, но ItemsControl треубет IEnumerable. Не наше красивого кода для преобразования. Писать колхозный код не хочу
Ошибка: Cannot convert 'System.Data.DataRowView' from type 'DataRowView' to type 'System.Collections.IEnumerable' for 'en-US' culture with default conversions; consider using Converter property of Binding. NotSupportedException:'System.NotSupportedException: ReferenceConverter не может выполнить преобразование из System.Data.DataRowView.
xaml:
<Grid.RowDefinitions>
<RowDefinition Height="150"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center">
<ItemsControl x:Name="Header" ItemsSource="{Binding ElementName=Plitka, Path=SelectedItem}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Image Width="100" Height="100" Source="{Binding LogoHome}"/>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="15" FontFamily="Rubik" Text="{Binding Home}"/>
<TextBlock FontSize="10" FontFamily="Rubik" Text="(Away)"/>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="VS" FontSize="35" FontFamily="Rubik"/>
<TextBlock FontSize="10" FontFamily="Rubik" Text="{Binding Starttime}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Image Width="100" Height="100" Source="{Binding LogoAway}"/>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="15" FontFamily="Rubik" Text="{Binding Away}"/>
<TextBlock FontSize="10" FontFamily="Rubik" Text="(Home)"/>
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
<ListBox x:Name="Plitka" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Grid.Row="1">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1" Width="300" Height="300" Margin="10,10" CornerRadius="10">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top">
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<Image Width="75" Height="75" Source="{Binding LogoHome}"/>
<TextBlock FontSize="10" FontFamily="Rubik" Text="{Binding Home}"/>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<TextBlock x:Name="isRunning" Foreground="White" Background="Red" Text="{Binding Status}" FontSize="20"/>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<Image Width="75" Height="75" Source="{Binding LogoAway}"/>
<TextBlock FontSize="10" FontFamily="Rubik" Text="{Binding Away}"/>
</StackPanel>
</StackPanel>
<StackPanel VerticalAlignment="Bottom" HorizontalAlignment="Center" Orientation="Vertical">
<TextBlock Text="{Binding Location}" Margin="0,20"/>
</StackPanel>
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
cs:
class Loader
{
public static DataView MatchUp { get; set; }
private static SqlConnection con = new SqlConnection(@"Data Source=RADIANCE\SQLEXPRESS;Initial Catalog=NBAShort;Integrated Security=True");
private static SqlDataAdapter adapter;
public static void getDataMatches()
{
try
{
adapter = new SqlDataAdapter($"SELECT Team.TeamName as Home, Team.Logo as LogoHome, Team_Home_Score, t.TeamName as Away, t.Logo as LogoAway, Team_Away_Score, Starttime, Location, Status FROM Matchup INNER JOIN Team on (Team_Home = TeamId) INNER JOIN Team as t on (Team_Away = t.TeamId)", con);
DataTable dt = new DataTable();
adapter.Fill(dt);
MatchUp = dt.DefaultView;
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
