Путаница в связывании DataWrid UWP с моделью MVVM - PullRequest
0 голосов
/ 28 сентября 2019

В этом руководстве по MSDN они используют Model-View-ViewModel [MVVM] для привязки DataGrid к списку клиентов, используя расширение разметки {x: Bind} следующим образом:

<controls:DataGrid x:Name="dataGrid1" 
    Height="600" Margin="12"
    AutoGenerateColumns="True"
    ItemsSource="{x:Bind MyViewModel.Customers}" />

И у них есть класс Customer следующим образом:

//backing data source in MyViewModel
public class Customer
{
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public String Address { get; set; }
    public Boolean IsNew { get; set; }

    public Customer(String firstName, String lastName, 
        String address, Boolean isNew)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
        this.Address = address;
        this.IsNew = isNew; 
    }

    public static List<Customer> Customers()
    {
        return new List<Customer>(new Customer[4] {
            new Customer("A.", "Zero", 
                "12 North Third Street, Apartment 45", 
                false), 
            new Customer("B.", "One", 
                "34 West Fifth Street, Apartment 67", 
                false),
            new Customer("C.", "Two", 
                "56 East Seventh Street, Apartment 89", 
                true),
            new Customer("D.", "Three", 
                "78 South Ninth Street, Apartment 10", 
                true)
        });
    }
}

Вопрос : Где находится MyViewModel в этом уроке?

Примечание : я использую последнюю версию 6.3.1 VS2019

1 Ответ

0 голосов
/ 28 сентября 2019

Учебное пособие кажется неполным.

Однако MyViewModel может быть открытым классом, который будет иметь свойство public ObservableCollection<Customer> Customers {get; set; }.

Пример: MainPage.xaml.cs

public class MainPage : ...
{
   public MyViewModel MyViewModel { get; set; } = new MyViewModel();

   public MainPage()
   {        
   }
}

public class MyViewModel : INotifyPropertyChanged
{
    public ObservableCollection<Customer> Customers { get; set;} = new ObservableCollection<Customer>();
}
...