How to display data-Binding or Override ToString() C# WPF XAML
<p>I have this Order class and I am using MVVM:</p>

<pre><code>namespace drinksMVVM.Models
{
    public class Order : INotifyPropertyChanged
    {
    private Item _OrderItem;
    private ObservableCollection&lt;Item&gt; _Supplements;
    private double _OrderPrice;

    public Item OrderItem
    {
        get
        {
            return _OrderItem;
        }
        set
        {
            _OrderItem = value;
            OnPropertyChanged("OrderItem");
            _OrderPrice += _OrderItem.Price;
        }
    }

    public ObservableCollection&lt;Item&gt; Supplements
    {
        get
        {
            return _Supplements;
        }
        set
        {
            _Supplements = value;
            OnPropertyChanged("Supplements");
            foreach(var supplement in _Supplements)
            {
                _OrderPrice += supplement.Price;
            }
        }
    }

    public double OrderPrice
    {
        get
        {
            return _OrderPrice;
        }
        set
        {
            _OrderPrice = value;
            OnPropertyChanged("Price");
        }
    }

    public Order()
    {

    }

    public Order(Item item, ObservableCollection&lt;Item&gt; items)
    {
        _OrderItem = item;
        _Supplements = items;
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
}
}
</code></pre>

<p>It contains object from type Item(properties Name and Price) and ObservableCollection of type Item. The Order object certainly contains one Item which is a single food/drink as order, but can contain Item and ObservableCollection, which is a food/drink with additional supplements.</p>

<p>Simple example:
I have order of Coffee with Sugar and Cream and I want to display them something like that:
Coffee (OrderItem)
Sugar+Cream (Supplements)
1,50 (OrderPrice)
The layout does not matter in this case</p>

<p>My question here is how to display the data in my view. I have two ideas which don't know how to continue.</p>

<ol>
<li><p>DataTemplate with textblocks, each textblock is bind to a property of the Order class, but don't know how to display every single item name from the ObservableCollection.</p>

<pre><code>&lt;DataTemplate x:Key="OrderTemplate"&gt;
    &lt;StackPanel Orientation="Vertical"&gt;
        &lt;TextBlock x:Name="OrderName" Text="{Binding OrderItem.Name}"/&gt;
        &lt;TextBlock x:Name="OrderSupplements" 
         Text="{Binding Supplements[0].Name}"/&gt; ///Can't solve this
         binding 
        &lt;TextBlock x:Name="OrderPrce" Text="{Binding OrderPrice}"/&gt;
    &lt;/StackPanel&gt;
&lt;/DataTemplate&gt;
</code></pre></li>
</ol>

<p>2.Override the ToString() method of the Order class in order to display all of the data in one single textblock, but also can't find a solution how to display all supplements names.</p>

<pre><code>    public override string ToString()
    {
        return OrderItem.Name + " " +/*every single supplement name*/+" "
        +OrderPrice.ToString();
    }
</code></pre>

<p>And</p>

<pre><code>    &lt;DataTemplate x:Key="OrderTemplate1"&gt;
        &lt;StackPanel Orientation="Vertical"&gt;
            &lt;TextBlock x:Name="test" Text="{Binding}"/&gt;
        &lt;/StackPanel&gt;
    &lt;/DataTemplate&gt;
</code></pre>