2 VM'а в рамках одного окна
Предположим, что у меня есть класс, который внутри себя содержит 2 объекта, которые описывают конфигурацию:
- Конфигурация серверной части
- Конфигурация клиентской части
И у каждого класса есть свои поля и т д.
Да, я могу все это засунуть в одну VM, но она имхо будет большой и хотелось бы ее поделить на 2 VM'а, но чтобы конфигурация была в рамках одного окна.
Как можно решить данную задачу? Есть ли какие-нибудь контролы в WPF, которые поддерживают разные контексты?
Ответы (1 шт):
Автор решения: VladD
→ Ссылка
А в чём проблема?
У вас выходит такая VM:
class MainVM : VM
{
public ServerConfigurationVM ServerConfiguration { get; }
public ClientConfigurationVM ClientConfiguration { get; }
// остальное
}
И такой XAML окна настроек:
<Window x:Class="Test.SettingsWindow" ...>
<Grid>
<ServerConfigurationControl DataContext="{Binding ServerConfiguration}"/>
<ClientConfigurationControl DataContext="{Binding ClientConfiguration}"/>
</Grid>
</Window>
Если не хотите писать отдельные UserControl'ы для серверной и клиентской конфигурации, можно переназначить DataContext для поддерева:
<Window x:Class="Test.SettingsWindow" ...>
<Grid>
<Grid DataContext="{Binding ServerConfiguration}">
<!-- тут UI для показа конфигурации сервера -->
</Grid>
...
</Grid>
</Window>