Caliburn.Micro - Binding ObservableCollection of ValueTuple to ComboBox

Viewed 1446

I'm trying to bind ObservableCollection of ValueTuples to ComboBox in WPF using Caliburn.Micro framework MVVM. When I do that in ViewModel:

private ObservableCollection<Tuple<string, string>> databasesFromDisk;
public ObservableCollection<Tuple<string, string>> DatabasesFromDisk
{
    get => databasesFromDisk;
    set
    {
        databasesFromDisk = value;
        NotifyOfPropertyChange(() => DatabasesFromDisk);
    }
}

and in XAML View:

<ComboBox x:Name="DatabasesFromDisk" DisplayMemberPath="Item1"/>

it works, ComboBox fills with first strings. But when I try to use C# 7 and change to:

private ObservableCollection<(string name, string path)> databasesFromDisk;
public ObservableCollection<(string name, string path)> DatabasesFromDisk
{
    get => databasesFromDisk;
    set
    {
        databasesFromDisk = value;
        NotifyOfPropertyChange(() => DatabasesFromDisk);
    }
}

it doesn't work when I don't change XAML - it shows empty list. It doesn't work when I change to DisplayMemberPath="name" - the same empty list. And it doesn't work properly when I remove DisplayMemberPath - it shows whole list but with both strings concatenated. How can I do it with ValueTuples?

1 Answers
Related