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

Как понять разработку десктопного приложения?

Долго не мог сформулировать свой вопрос и его детали.
Например, возьмем веб-сайт. Клацая по элементам управления, мы можем переходить по его различным разделам. То есть браузер каждый раз загружает разные страницы, но все действия происходят в одном окне.

Теперь возьмем десктопное приложение. Например, Skype. Клацая по списку контактов, правая часть приложения открывает чат, но левая часть (список контактов) остается на своем месте.

Вообщем как это реализуется и с помощью чего?) Да, скорей всего, по тупому сформулировал свою мысль, но всё же прошу помощи у знающих людей.

P.S. Бороздя просторы гугла, наткнулся на паттерн MVVM. В правильном направлении я следую?
  • Вопрос задан
  • 268 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Oblfakir
Window.Resources>
        <DataTemplate x:Key="MainWindow" DataType="{x:Type viewModels:MergedModuleManagerViewModel}">
            <ns:MainWindowView/>
        </DataTemplate>
        <DataTemplate x:Key="OpenProject" DataType="{x:Type viewModels:MergedModuleManagerViewModel}">
            <ns:OpenProjectView/>
        </DataTemplate>
        
    </Window.Resources>

    <Grid>
        <ContentControl>
            <ContentControl.Style>
                <Style TargetType="{x:Type ContentControl}">
                    <Setter Property="ContentTemplate" Value="{DynamicResource MainWindow}" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding SwitchView}" Value="1">
                            <Setter Property="ContentTemplate" Value="{DynamicResource MainWindow}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding SwitchView}" Value="2">
                            <Setter Property="ContentTemplate" Value="{DynamicResource OpenProject}" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ContentControl.Style>
        </ContentControl>
    </Grid>


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

Используется MVVM, ViewModel должна реализовывать интерфейс INotifyPropertyChanged
Ответ написан
Griboks
@Griboks Куратор тега C#
Берёшь учебник по ООП и читаешь.
Ответ написан
Ptolemy_master
@Ptolemy_master
Вы можете реализовать это как угодно, используя MVVM или нет, это всего лишь вопрос подхода.
Суть десктопного приложения в том, что у вас есть окно, и на нем контролы. Вы загружаете в них некоторые данные. В вашем примере слева это список контактов, который загружается вначале и затем может изменяться (например, если добавили новый контакт). Справа вы отображаете другие контролы, данные в которых изменяются по ходу работы с приложением.
Клик по контакту - возбудили некоторый ивент - сработал некоторый код, который загрузил данные в некоторый объект - эти данные передались в контролы справа.
В модели MVVM все внутренности скрыты, вы лишь устанавливаете ивент, обновляете данные (модель), а отрисовка проходит сама, суть, впрочем, не меняется.
Ответ написан
Комментировать
@Levhav
Возьмусь за разработку проектов любой сложности.
Примерно тем же путём как делаются spa приложения.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы