У меня есть приложение WPF. Я разделил его на два проекта в Visual Studio - WPF. Net Базовый проект "Frontend" и. Net Базовый консольный проект "Backend".
Как видно из названий, я стремлюсь так что один проект связан только с отображением форм, графики и всего, что видит пользователь, в то время как другой получает данные из базы данных, выполняет другие бизнес-логи c и т. д. c.
В настоящее время у меня есть ItemsControl
, который я хочу заполнить объектами "Страна". Я хочу, чтобы каждый элемент в элементе управления отображал несколько значений о стране и имел пару кнопок, привязанных привязками данных к RelayCommands
(это класс, который реализует ICommand
).
One way I Здесь, в StackOverflow, мы должны были использовать DataTemplate
для ItemsControl
и установить для него CountryView
(пользовательский элемент управления, который я создал в соответствии с шаблоном MVVM), как в "CountryListView":
<ItemsControl ItemsSource="{Binding CountrySet}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<views:CountryView/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Проблема в том, что для привязки коллекции мне нужно получить ее из базы данных. Что является заданием "Backend". Тем не менее, поскольку внешний интерфейс ссылается на внутренний интерфейс, я не могу заставить внутренний интерфейс заполнять набор объектов «CountryViewModel», так как это создаст циклическую зависимость. Поэтому я импровизировал и создал класс «Country» в проекте «Backend» и сказал, что задача, которая получает информацию из базы данных, заполняет HashSet
объектов «Country», которые затем фронт использует и присваивает CountrySet
свойство модели представления для «CountryListView».
У меня есть две проблемы с этим подходом:
- Объект "Страна" не может иметь свойства
RelayCommand
, так как это будет опять-таки круговая зависимость. - "CountryViewModel" в данный момент не используется, и наличие метода, который просто преобразует объекты "Country" в объекты "CountryViewModel", похоже на то, что я копаю себя еще глубже в яму, я полагаю, что я я сейчас нахожусь.
Вопрос в том, Как я могу иметь отдельные внешние и внутренние части и список объектов на внешней стороне, которые используют шаблон данных, который является пользовательским элементом управления и получить данные из серверной части?