Amffore
@Amffore
студент, учу c#

Как подружить User Control и MVVM?

В рамках курсовой работы, делаю приложение на WPF.
На данный момент имею окно вот такого вида:
5ba36e9880236071111134.png
В черной рамке это user control, о котором и пойдет речь дальше. Состоит он из двух label, одного textblock, image, button. Проблема в том что я никак не могу продумать, как связать мой user control с ViewModel.
По примерам в гугле получается только вот так
private Tour selectedTour;

        public ObservableCollection<Tour> Tours { get; set; }
        public Tour SelectedTour
        {
            get { return selectedTour; }
            set
            {
                selectedTour = value;
                OnPropertyChanged("SelectedTour");

            }
        }

        public TourViewModel()
        {
            Tours = new ObservableCollection<Tour>
            {
                new Tour {Title="Тур по Сочи", Description="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", Price=30000.00},
                new Tour {Title="Пляжи Анапы", Description="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", Price=40000.00},
                new Tour {Title="Тур по Москве", Description="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", Price=25000.00},
                new Tour {Title="Тур по Санкт-Петербургу", Description="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", Price=50000.00}
            };
        }

а здесь оборачиваю свой user control в label
<StackPanel Grid.Row="1" HorizontalAlignment="Center">
        <ListBox ItemsSource="{Binding Tours}" SelectedItem="{Binding SelectedTour}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <cntrl:TourBlockControl Title="{Binding Path=Title}" Price="{Binding Path=Price}" ImageSource="/WPFTourFirmApp;component/Images/1.png"  Description="{Binding Path=Description}"></cntrl:TourBlockControl>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        </StackPanel>


но это далеко не чего хотелось бы видеть. На ум только приходит то, что нужно доработать usercontrol, добавив ему свойств аналогичных label.
UPD. Хотелось бы, что бы именно к usercontrol (TourBlockControl) шла привязка из ViewModel.

Подскажите в какую сторону копать и с чем ознакомиться.

Дабы не скидывать сюда стену кода, можно ознакомиться с ним здесь:
https://github.com/Amffore/WPFTourFirmApp

UPD2. Пришел к выводу что в данном случае свой user control попросту не нужен. Ведь есть тот же ListBox который меня вполне устраивает.
  • Вопрос задан
  • 278 просмотров
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
Как минимум у тура должны быть проперти title и price раз к ни идет биндинг
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы