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 приложения.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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