Как сделать 2 колонки в listbox через mvvm на Avalonia

Мне нужно вывести два списка List в две колонки ListBox, но так что-бы это была одна строка, через патерн MVVM. Я уже пол интернета облазил но так и не нашёл ничего. Я только учусь возможно из-за этого что-то пропустил, если у кого-то есть возможность обяснить, или хотя б пример какой-то, был бы очень рад.

ViewModel:

private List<string> _artists = new();
private List<string> _names = new();
private List<Song> _songs = new();

     public List<string> Artists
    { 
        get 
        { 
            return _artists; 
        } 
        set { _artists = value; OnProopertyChanged(); } 
    }

     public List<string> Names
    {
        get
        {
            return _names;
        }
        set { _names = value; OnProopertyChanged(); }
    }

     public List<Song> Songs
    {
        get
        {
            return _songs;
        }
        set { _songs = value; OnProopertyChanged(); }
    }

        for (int counterForList = 1; counterForList < 41; counterForList++)
        {
            HtmlMethod(counterForList,2, out Artist);
            HtmlMethod(counterForList,3, out Name);

            Song song = new Song(Name, Artist);
            Songs.Add(song);
        }

        foreach (var song in Songs)
        {
            Artists.Add(song.Artist);
            Names.Add(song.Name);
        }

Model:

public class Song
{
    public string Name { get; set; }
    public string Artist { get; set; }

и сам MainWindow:

<Window xmlns="https://github.com/avaloniaui"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:vm="using:AvaloniaApplication1.ViewModels"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="350"
    x:Class="AvaloniaApplication1.Views.MainWindow"
    Icon="/Assets/avalonia-logo.ico"
    Title="AvaloniaApplication1"
    Width="600"
    Height="350"> 
    

<Design.DataContext>
    <vm:MainWindowViewModel/>
</Design.DataContext>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <TextBlock Text="{Binding Title}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1"/>
    <ListBox Items="{Binding Songs}" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" Grid.RowSpan="2">
        <ListBox.ItemTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
            </Grid>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

Вот есть код, я не понимаю как вывести Artists и Names в разные колонки, или может Song можно поделить. В документалке по avalonia написано что уних нету ItemSource у них только Item.


Ответы (1 шт):

Автор решения: aepot

Очень просто, вы почти всё сделали

<ListBox.ItemTemplate>
    <DataTemplate>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <TextBlock Margin="5" Text="{Binding Name}"/>
            <TextBlock Margin="5" Grid.Column="1" Text="{Binding Artist}"/>
        </Grid>
    </DataTemplate>
<ListBox.ItemTemplate>

Либо еще так можно

<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <TextBlock Margin="5" Text="{Binding Name}"/>
            <TextBlock Margin="5 0" Text="-"/>
            <TextBlock Margin="5" Text="{Binding Artist}"/>
        </StackPanel>
    </DataTemplate>
<ListBox.ItemTemplate>

Документация

→ Ссылка