mvvm универсальное приложение, почему оно не ожидает

1

моя модель внутри общего проекта

class model
{
   public string title;
   public string link;
   public string pubDate;
   public string description;
   public string imageLink;
}

и моя модель просмотра внутри общего проекта

'class viewModel: INotifyPropertyChanged {public ObservableCollection _posts {get; set; задавать; } }

    public ObservableCollection<model> posts {
        get {
           return _posts ;
        }
        set
        {
            _posts = value;
            RaisePropertyChanged("posts");
        }
    }


    public viewModel()
    {
        posts = new ObservableCollection<model>
        {
            new model { title="tiltle", description="description", link="link1" },
            new model { title="tiltle2", description="description2", link="link1" },
            new model { title="tiltle3", description="description3", link="link1" },
            new model { title="tiltle4", description="description4", link="link1" },
            new model { title="tiltle5", description="description5", link="link1" },
        };

    }

    public void RaisePropertyChanged(string prop)
    {
        if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(prop)); }
    }
    public event PropertyChangedEventHandler PropertyChanged;
}'

мой xaml

<ListBox x:Name="listBoxControl" ItemsSource="{Binding}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <StackPanel>
                            <TextBlock Text="{Binding Path=title}" />
                            <TextBlock Text="{Binding Path=description}" />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

мой xaml.cs

public MainPage()
    {
        this.InitializeComponent();
        this.DataContext = new viewModel();
       listBoxControl.DataContext = new viewModel().posts;

    }

это мой первый вопрос, у меня проблема с реализацией mvvm. но я хорошо понимаю об этом, когда я бегу, я ничего не видел

Теги:
xaml
mvvm
win-universal-app

1 ответ

0
Лучший ответ

Все в порядке, за исключением того, что вы должны использовать свойства с геттерами в своей model тогда вы увидите что-то.

так:

class model
{
   public string title {get;set;}
   public string link  {get;set;}
   //etc..
}

потому что привязка данных работает с полями "Свойства не".

на стороне примечание: вам не нужно называть ваш ListBox или устанавливать его DataContext из кода позади, вы уже установили DataContext вашего представления в свою ViewModel, так что вы можете просто привязать свой ItemSouce напрямую, например:

<ListBox ItemsSource="{Binding posts}">

хотя способ, которым вы это сделали, будет работать нормально.

также не забудьте реализовать INotifyPropertyChanged в вашей model если значения свойств меняются после инициализации.

  • 0
    это работает, я не знаю, как поблагодарить вас, это мой первый вопрос здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню