В настоящее время я разрабатываю приложение WPF с использованием шаблона MVVM. View, Model, ViewModel находятся в отдельной библиотеке классов.
My View имеет элемент управления TreeView, который должен быть заполнен с использованием привязки данных.
Я получаю свои данные из службы WCF, доступ к которой осуществляется через модель. Моя модель имеет ссылки на службу WCF и вызывает метод из WCF для извлечения вложенной коллекции.
ViewModel делает данные доступными для просмотра. Извлечение данных и т. Д. Все работает нормально, за исключением отображения их в TreeView.
Мой XAML для TreeView выглядит так
<TreeView Grid.Row="1" ItemsSource="{Binding CustomerTree}" >
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type ....}" ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type ....}" ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=ID}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
Свойство DataType = "{x: Type .....} ожидает определенный тип, который должен быть одним из типов в моей вложенной коллекции, но представление не знает, какие типы доступны. Мой ViewModel может получить доступ к типы ссылки на службу в модели, например тип клиента, с использованием Model.ServiceReference.Customer.
Является ли Модель подходящим местом для добавления ссылки на услугу? Как я должен заставить мой TreeView отображать данные?
Спасибо
Грант