7 / 7 / 3
Регистрация: 16.04.2015
Сообщений: 175
1
WPF

Что значит "Писать как все" или "Писать правильно на WPF"?

07.11.2019, 09:32. Показов 1453. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Объясните, пожзалуйста, "дураку", что значит "писать на WPF как все" или "писать правильно на WPF"?
Как пишут правильно? Имеется ввиду шаблон MVVM или подразумевается что-то ещё? Если речь только про MVVM, то почему это правильно?
П.С.: Почему-то, все пишут что писать надо правильно, но никто при этом не желает объяснить как это - "правильно"...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2019, 09:32
Ответы с готовыми решениями:

Как правильно писать стили у WPF?
я тут немного запутался с написанием стилей. у меня есть шаблоны контролов в файле App.xaml, а сами...

Паттерн MVVM или как писать приложения на WPF
Собтвенно вопрос в заголовке. По-скольку WPF поддерживает привязку различным образом наверно это...

Как правильно писать: «IF %n%» или просто «IF n»?
Вопрос почему, если в данном коде в ифе стоит не значение переменной, то все норм, а если поставить...

Как правильно писать @media ,что бы он свойства не перечеркивал
@media (max-width: 1919px) and (min-width: 1366px) { body { max-width: 1366px; /*...

9
Модератор
Эксперт .NET
15456 / 10703 / 2784
Регистрация: 21.04.2018
Сообщений: 31,516
Записей в блоге: 2
07.11.2019, 10:10 2
DMF, если почитаете мои темы и посты в разделе я уже не раз за это писал.

WPF - это инструмент СПЕЦИАЛЬНО созданный для реализации View в паттерне MVVM.
Использование его по иному возможно, но ведёт к многочисленным проблемам, которые не имеют типовых решений. И каждый раз придётся по новой разбираться с этими проблемами. По сути код превратиться в гору костылей в которой никто, даже сам автор, разобраться не сможет.
Основной язык WPF это XAML. Со всеми присущими ему типами, методами решений: привязки, словари, ресурсы, стили, шаблоны элементов, шаблоны данных, компоновка элементов, команды и т.д. И всё это используется практически в любом WPF.

Поэтому "правильное" WPF решение обязательно является реализацией MVVM. А сама WPF View в большей части написана на XAML.

Добавлено через 2 минуты
DMF, читали темы из Готовые решения, примеры и рекомендации начинающим на WPF [Элд Хасп]
0
7 / 7 / 3
Регистрация: 16.04.2015
Сообщений: 175
08.11.2019, 11:42  [ТС] 3
Цитата Сообщение от Элд Хасп Посмотреть сообщение
СПЕЦИАЛЬНО созданный для реализации View в паттерне MVVM.
А я-то думал, специально для адаптивности UI...

Цитата Сообщение от Элд Хасп Посмотреть сообщение
читали темы из Готовые решения, примеры и рекомендации начинающим на WPF
Читал, но пока не всё.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
XAML. Со всеми присущими ему типами, методами решений: привязки,
Вот именно привязки меня и интересуют... Где именно про это прочитать можно? Именно объяснение как это работает, а не примеры. Т.е., в каких случаях пишем динамический ресурс, в каких - статический. В чём разница. К чему можно привязываться, а к чему - нет. И т.д.

А по-поводу MVVM - не вижу в нём смысла, когда это усложнит задачу. В моей программе логики ноль...
0
Модератор
Эксперт .NET
15456 / 10703 / 2784
Регистрация: 21.04.2018
Сообщений: 31,516
Записей в блоге: 2
08.11.2019, 14:48 4
Цитата Сообщение от DMF
А я-то думал, специально для адаптивности UI...
Это тоже есть как и у любого современного инструмента для View.
Но "заточен" WPF именно под MVVM.
0
Модератор
Эксперт .NET
15456 / 10703 / 2784
Регистрация: 21.04.2018
Сообщений: 31,516
Записей в блоге: 2
08.11.2019, 16:18 5
Цитата Сообщение от DMF
Вот именно привязки меня и интересуют...
Привязка это экземпляр класса Binding.
Этот экземпляр можно присвоить свойству Dependency Property, которое может быть только у DependencyObject.
В привязке указывается связь (зависимость) от другого свойства.
Чтобы отслеживать изменения значения свойства в нём обязательно должна быть реализована поддержка INPC.

Такая привязка значений свойственна зависимостям View и VM. Поэтому является основным средством задания значений для отображения данных в WPF.

Есть ли смысл в MVVM для простых задач?
Однозначно - да!
Не научившись его реализовать на простых задачах, как вы собираетесь его реализовать на сложных?!

Даже когда вы наберётесь опыта и для простых задач всё сможете ПРАВИЛЬНО реализовать в CB окна, вам нужно будет четкое понимание где собственно данные, а где их представление.
0
7 / 7 / 3
Регистрация: 16.04.2015
Сообщений: 175
10.11.2019, 11:39  [ТС] 6
Вот сейчас запнулся на DataContext. Как реализовать?
XML
1
2
3
4
5
6
7
8
9
    <Window.Resources>
        <local:JointsActParamsClass x:Key="JointsActContext"></local:JointsActParamsClass>
    </Window.Resources>
...
            <FlowDocument x:Name="Act" ColumnWidth="800" PageHeight="1100" PageWidth="800" PagePadding="77,1,19,19" DataContext="{DynamicResource JointsActContext}">
                <BlockUIContainer>
                    <UniformGrid x:Name="ActNumberControl" Columns="1" Rows="1">
                        <Label x:Name="ActNumber" Cursor="Hand" Content="{Binding ActNumber, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" FontFamily="Cambria" FontSize="27" FontStyle="Italic" HorizontalAlignment="Center" FontWeight="Bold" Margin="0,40,0,0" MouseUp="ActNumber_MouseUp" Visibility="Visible" KeyboardNavigation.IsTabStop="False" Focusable="True"/>
...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    [Serializable]
    public class JointsActParamsClass : ObservableCollection<object>
    {
        private string actNumber;
...
        public JointsActParamsClass()
        {
            actNumber = "АКТ  №______________";
...
}
        public string ActNumber
        {
            get { return actNumber; }
            set { actNumber = value; }
        }
...
Чего не хватает для обратного отображения? Только прописать коллекции контекст данных (как?) или ещё что-то?
0
Ищущий знания
11 / 8 / 4
Регистрация: 31.05.2015
Сообщений: 209
10.11.2019, 13:58 7
DMF, может это будет полезно Как правильно инициализировать контекст данных?
0
Модератор
Эксперт .NET
15456 / 10703 / 2784
Регистрация: 21.04.2018
Сообщений: 31,516
Записей в блоге: 2
10.11.2019, 15:25 8
DMF, в данном случае тип JointsActParamsClass это не VM.
Это тип для ПРЕДСТАВЛЕНИЯ данных. И атрибут [Serializable] ему не нужен.
Это атрибут нужен для типов данных в Модели.

Сама VM может выглядеть так
C#
1
2
3
4
5
6
7
8
9
10
public class JointsVM
{
    public JointsActParamsClass Joints {get;}
    private readonly JointsModel model // Ссылка на модель
        = new JointsModel();
 
   public JointsVM()
      => Joints=model. GetJoints();
// Или Joints = new JointsActParamsClass(.....);
}
И запись в контекст данных
XML
1
2
3
    <Window. DataContext>
        <local: JointsVM/>
    </Window. DataContext>
0
7 / 7 / 3
Регистрация: 16.04.2015
Сообщений: 175
11.11.2019, 08:09  [ТС] 9
Цитата Сообщение от Элд Хасп Посмотреть сообщение
И атрибут [Serializable] ему не нужен
Он нужен для сериализации/десериализации при сохранении/загрузке файла...
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Сама VM может выглядеть так
Благодарю! Буду разбираться...
0
Модератор
Эксперт .NET
15456 / 10703 / 2784
Регистрация: 21.04.2018
Сообщений: 31,516
Записей в блоге: 2
11.11.2019, 10:51 10
DMF, вы напрасно тащите DTO типы из Модели в View.
Сериализации подлежат DTO типы - это просто контейнеры для данных.
В них нет реализаций INPC и INCC.
А для вас View уже нужны иные классы: удобные для представления, с INPC и INCC, иногда с дополнительными свойствами для взаимодействия с View. Но возможность их сериализации не нужна.
0
11.11.2019, 10:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2019, 10:51
Помогаю со студенческими работами здесь

General upload failure или Как правильно писать путь?
Доброго времени суток форумчанином! Проблема такого, я не совсем разбираюсь в php, (я верстальщик...

Как правильно написать код в VB? Что нужно писать в блокноте?
Создать текстовый файл с записями по теме вокзал. В записи должны быть: фамилия пассажира, номер...

Где можно почитать как же все таки правильно писать WEB приложения?
Доброго времени суток! Немноженько предыстории....Нужно было накодить менеджер контактов...

Что лучше: писать прогу по ТЗ или как Альтернативу?
Приветствую всех. Что лучше писать программу по принципу &quot;напиши аналог такой вот програмки...&quot;...

Как лучше учиться: писать консольные приложения или оконные? И если писать оконные, то на чём лучше?
На днях я узнал про Borland c++ builder и хочу воспользоваться им, но можно и писать код, что-бы...

Можно ли под Linux в Mono писать приложения, использующие WinForms или WPF?
Добрый день:)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru