WPF DataBind ListBox для свойства

M. Chris спросил: 11 июня 2018 в 11:07 в: c#

Я пытаюсь связать свойство ICollectionView, которое у меня есть в моем классе ViewModel, в ListBox, но оно ничего не отображает.

Изменить: я добавил класс модели автомобиля в соответствии с запросом. Класс содержит только несколько свойств и метод, который добавляет элементы в список. Это странно, потому что, когда у меня было все в коде, все было отлично. Я добавил путь к папке ViewModels в xmlns: vm. Я не понимаю, чего не хватает.

Файл XAML:

<Window x:Class="WPFLearning.MainWindow"
    xmlns:local="clr-namespace:WPFLearning"
    xmlns:vm="clr-namespace:WPFLearning.ViewModels"
    Title="MainWindow" Height="450" Width="800">
<Window.Resources>
    <DataTemplate x:Key="CarContext">
        <TextBlock Text="{Binding Brand}"></TextBlock>
    </DataTemplate>
</Window.Resources>
<ListBox x:Name="listBox" HorizontalAlignment="Left" Height="399" 
             Margin="10,10,0,0" VerticalAlignment="Top" Width="190" IsSynchronizedWithCurrentItem="True"
             SelectionChanged="listBox_SelectionChanged" ItemsSource= "{Binding CarsView}"/>

ViewModel:

namespace WPFLearning.ViewModels
{
public class CarViewModel
{
    public ICollectionView CarsView { get; }
    private Car _car;
    public string SomeString { get; set; }
    public CarViewModel()
    {
        SomeString = "SOSDM";
        _car = new Car();
        _car.MakeListOfCars();
        CarsView = CollectionViewSource.GetDefaultView(_car.GetCars());
    }
}

MainWindow. xaml.cs:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();        this.DataContext = new CarViewModel();
    }
 }

Класс автомобиля:

 namespace WPFLearning.Models
{
public class Car
{
    private readonly List<Car> cars = new List<Car>();
    private string _carModel;
    private int _plateNumber;    public string Owner { get; set; }
    public string Brand { get; set; }    public void MakeListOfCars()
    {        cars.Add(new Car { _carModel = "Yaris", Owner = "Sorin Marin", Brand = "Toyota", _plateNumber = 102939 });
        cars.Add(new Car { _carModel = "Logan", Owner = "Paul Marin", Brand = "Dacia", _plateNumber = 102939 });
        cars.Add(new Car { _carModel = "S5", Owner = "Gogu Marin", Brand = "BMW", _plateNumber = 102939 });
    }    public List<Car> GetCars()
    {
        return cars;
    }    public override string ToString()
    {
        return Brand;
    }
}

}


0 ответов