Как плохо Кривая обучения WPF? [закрытый]

Вероятно Regexp.escape(foo) был бы начальная точка, но там серьезное основание, Вы не можете использовать более стандартную интерполяцию выражения: "my stuff #{mysubstitutionvariable}"?

кроме того, можно просто использовать !goo.match(foo).nil? с литеральной строкой.

45
задан Peter Mortensen 19 November 2009 в 19:43
поделиться

11 ответов

WPF отличается; от этого никуда не деться.

Мой главный совет: не бойтесь XAML; Примите его, вот в чем сила!

Позвольте мне объяснить: -

Чтобы быть продуктивным, я предпочитаю писать XAML в текстовом представлении, поскольку я могу создать простой макет окна за несколько нажатий клавиш . Если вы регулярно набираете код, это очень быстрый способ разработки окон. Затем вы можете использовать визуальные редакторы, чтобы он выглядел красиво.

Если вы помните, что каждый элемент XAML будет « новый » этот объект и что каждый атрибут этого элемента XAML является свойство объекта, вы можете думать о XAML как о создании объекта и назначении свойств. Очень похоже на написание кода.

Если вы проводите слишком много времени в визуальном дизайнере, вы не сможете этого оценить,

35
ответ дан 26 November 2019 в 21:05
поделиться

As you might be able to infer from my question history, I definitely have found it to be a steep learning curve. You describe my experience almost exactly. As a full-time student (in math and physics, not software engineering) who only does WPF programming for hobbyist applications, it's been rather frustrating. I've tried creating new applications in WPF, or porting some of my old applications over to WPF, and always get stuck on some small little thing that seems inordinately hard. One thing I haven't done---basically because of time concerns---is sit down with e.g. a book or a series of tutorials and go through them step-by-step. If you're a professional developer, that might be much more doable, and might make WPF much easier for you.

The biggest thing that gives me trouble, I think, is getting my head around the Model-View-ViewModel paradigm (see e.g. this question of mine). Whereas in WinForms I could just drag and drop some stuff onto a form, mess with its properties, and hook up some events in the codebehind, now I have to think about partitioning things into view, model, and viewmodel. A lot of those codebehind events become validation rules or databinding stuff. It probably doesn't help that none of my applications are really "data manipulation" applications; that is, they don't manipulate a database of customer info or anything, where a lot of this would make sense. Instead it's more like "I want a textbox that the user enters a URI into, and I want the button that says 'Download' to only be enabled if that textbox contains a valid URI." Little things like that start getting really quite complicated; I have to think about where the URI fits in my model, where it fits in my viewmodel, hook up a validation framework, and databind properties of the button and the textbox to all these elements.

Another annoying issue is how many things are just plain missing from the framework. For example, sorting listviews.

In the end, though, WPF has a lot of advantages. The layout framework seems a lot nicer than the primarily pixel-based WinForms model. It uses modern fonts like Segoe UI, heh :P. And its compositing features are pretty awesome too, e.g. how natural it is to put an image on a button (just put an image XAML tag inside the button XAML tag, essentially); I suspect it can solve my problem regarding checkboxes with controls inside of them, too, although I haven't tried to do so yet.

9
ответ дан 26 November 2019 в 21:05
поделиться

Я играю с .NET более 4 лет, в основном с приложениями Windows Forms . Связывание - это не что-то неизвестное, и я стараюсь использовать передовой опыт во всех своих приложениях на C #. В течение последнего месяца я изучал WPF для работы, и я должен признать, что это ОЧЕНЬ мощный инструмент, но добиться чего-то намного сложнее. Вы можете сделать намного больше и создать отличный дизайн с меньшими усилиями, но только если вы узнаете, как это работает на самом деле, а это сложно, потому что оно огромно.

Более того, отладка сложнее - это тоже замедляет обучение. Я думаю, что проблема заключается в IDE Visual Studio, которая не очень помогает в XAML, и вы быстро упускаете некоторые функции IntelliSense C # при выполнении привязки или других вещей, которые теперь находятся в теге XML. Мне это нравится но да

9
ответ дан 26 November 2019 в 21:05
поделиться

Это может быть довольно круто.

Я потратил большую часть месяца на эксперименты с WPF и написание в нем макета нашего текущего продукта, не развивая интуицию для его модели привязки данных или даже выяснить, как Microsoft хочет его использовать. Мне потребовалось гораздо меньше времени, чтобы понять основы ASP.NET MVC.

[Наше приложение отображает / зависит от большого количества данных в реальном времени, и я использовал книгу Натана о Windows Presentation Foundation. Возможно, более подходящей была бы другая книга.]

6
ответ дан 26 November 2019 в 21:05
поделиться

Есть хорошая статья Карстена Янушевского под названием Нарушение кривой: WPF и производительность , которые могут вас заинтересовать:

Давайте проясним: WPF поставляется с кривая. Я сейчас посмотрел кучу разработчики попали в эту кривую. И кривая крутая. Мы говорим между от двух недель до двух месяцев кривой в зависимости от разработчика и уровень опыта / интуиции разработчик. Будут моменты полной мистификации и множества моменты освещения. Это сразу болезненно и приятно, если разработчик радуется открытию глубокий и продуманный интерфейс Платформа. Это сразу знакомо и иностранец. Есть много общего с другие парадигмы разработки пользовательского интерфейса: стили чувствую себя как CSS, ну вроде как. XAML код позади похож на ASP.NET, ну вроде. 3D похоже на DX или OpenGL, ну вроде. Перенаправленные события кажутся .NET события, ну вроде как. Зависимый свойства ощущаются как свойства, ну вроде. Список можно продолжать. Но восхищаясь этими (вроде) знакомыми метафор там так много чужих концепции, которые необходимо усвоить: управление шаблонами, раскадровки, сразу приходит в голову привязка данных. Это нетривиальная кривая и не рассчитывать на продуктивность в первый день или даже 1-я неделя или даже 1-й месяц.

Это того стоит! ;)

17
ответ дан 26 November 2019 в 21:05
поделиться

Из тех немногих людей, с которыми я работал и которым пришлось этому научиться, они действительно рекомендуют пройти все учебные пособия из Expression Blend. Это дало им хороший опыт работы с WPF и лучший инструмент для работы с ним.

2
ответ дан 26 November 2019 в 21:05
поделиться

Если у вас есть опыт работы с HTML, XML или аналогичными языками, это не особенно сложно, особенно если у вас есть опыт веб-дизайна. Если вы исходите исключительно из опыта WinForms, кривая обучения будет немного круче. В настоящее время я сам изучаю WPF, и, поскольку у меня обширный опыт веб-разработки, я не нахожу концепции, которые так сложно освоить для большинства из них. Я обнаружил, что обучающие онлайн-видео на WindowsClient.net тоже исключительно полезны, хотя и немного плохо организованы.

2
ответ дан 26 November 2019 в 21:05
поделиться

Да, это непростая прогулка, но не бойтесь. Особенность WPF в том, что он прекрасно спроектирован так, что вы получаете постоянную положительную эмоциональную обратную связь (по крайней мере, я так делал;) при его изучении. Вы любите сидеть, играя с ним, и восклицайте "ВАУ" каждые несколько минут;)

3
ответ дан 26 November 2019 в 21:05
поделиться

Это будет один из тех, «как это зависит». но все это на самом деле зависит от того, являетесь ли вы разработчиком, который пытается постоянно улучшать свои навыки. Если это так, то в конечном итоге все сводится к нескольким вещам.

Купите WPF Unleashed (есть и другие книги, но я настоятельно рекомендую эту), проработайте примеры и примерно через 2 месяцев или около того, вы будете удивляться, как вообще обходились без него.

Это не ракетостроение, и здесь нет концепций, меняющих парадигму. По факту,

3
ответ дан 26 November 2019 в 21:05
поделиться

WPF становится простым, если вы получите общее представление о том, как он работает - попробуйте « WPF - как и почему ». Самая большая проблема заключается в том, стоит ли оно вообще того, и есть еще много приложений, которые можно было бы реализовать в виде Windows Forms, плюс немного графики.

Я также согласен с предыдущим комментарием о проникновении в XAML - это как немного более сложный HTML, и единственная реальная трудность - это выяснить, что и что делает. Что касается того, что вы застряли позже в проекте - разве вы не всегда застреваете позже в проекте? Когда вы начинаете пытаться набрать 1%, это сложно.

5
ответ дан 26 November 2019 в 21:05
поделиться

Сложность изучения WPF заключается не столько в API, сколько в модели. Это совершенно другая ментальная модель, чем вы бы использовали с чем-то вроде Windows Forms .

Вместо того, чтобы писать методы, которые императивно заполняют элемент пользовательского интерфейса, вы обычно связываете данные со свойствами объекта. Чтобы получить сложное поведение, вы обычно используете некоторый уровень композиции.

В качестве примера, если у вас есть ряд элементов, которые вы хотите включить в список, с фрагментом текста, за которым следует изображение. В Windows Forms вы получаете список и повторяете его. Для каждого элемента в списке вы должны создать элемент управления для элемента и текста, добавить изображение, а затем добавить новый субэлемент управления в список. (Точная процедура может отличаться в зависимости от типа элемента управления. Вы можете добавлять SubItems вместо создания одного элемента управления и т. Д.).

WPF справится с этим совершенно иначе. В WPF на верхнем уровне вы должны объявить объект-контейнер и привязать его к списку.

Затем вы дадите этому контейнеру шаблон, который будет использоваться для отображения его элементов. Шаблон - это, по сути, еще один элемент управления, который определяет расположение подэлементов, которые связаны с экземпляром класса, которым заполняется список.

В конечном итоге он выглядит очень композиционно и невероятно мощным. Это также очень отличается от модели, к которой привыкло большинство разработчиков, и до тех пор, пока вы не усвоите эту модель, очень часто возникают проблемы, пытаясь сделать что-то так, как в Windows Forms / и т. Д.

Как только вы привыкнете к однако возвращение модели к другим API болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

В WPF на верхнем уровне вы должны объявить объект-контейнер и привязать его к списку.

Затем вы дадите этому контейнеру шаблон, который будет использоваться для отображения его элементов. Шаблон - это, по сути, еще один элемент управления, который определяет расположение подэлементов, которые связаны с экземпляром класса, которым заполняется список.

В конечном итоге он выглядит очень композиционно и невероятно мощным. Это также очень отличается от модели, к которой привыкло большинство разработчиков, и до тех пор, пока вы не усвоите эту модель, очень часто возникают проблемы, пытаясь сделать что-то так, как в Windows Forms / и т. Д.

Как только вы привыкнете к однако возвращение модели к другим API болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

В WPF на верхнем уровне вы должны объявить объект-контейнер и привязать его к списку.

Затем вы дадите этому контейнеру шаблон, который будет использоваться для отображения его элементов. Шаблон - это, по сути, еще один элемент управления, который определяет расположение подэлементов, которые связаны с экземпляром класса, которым заполняется список.

В конечном итоге он выглядит очень композиционно и невероятно мощным. Это также очень отличается от модели, к которой привыкло большинство разработчиков, и до тех пор, пока вы не усвоите эту модель, очень часто возникают проблемы, пытаясь сделать что-то так, как в Windows Forms / и т. Д.

Как только вы привыкнете к однако возвращение модели к другим API болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

d объявить объект-контейнер и привязать его к списку.

Затем вы дадите этому контейнеру шаблон для отображения его элементов. Шаблон - это, по сути, еще один элемент управления, который определяет расположение подэлементов, которые связаны с экземпляром класса, которым заполняется список.

В конечном итоге он выглядит очень композиционно и невероятно мощным. Это также очень отличается от модели, к которой привыкло большинство разработчиков, и до тех пор, пока вы не усвоите эту модель, очень часто возникают проблемы, пытаясь сделать что-то так, как в Windows Forms / и т. Д.

Как только вы привыкнете к однако возвращение модели к другим API болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

d объявить объект-контейнер и привязать его к списку.

Затем вы дадите этому контейнеру шаблон для отображения его элементов. Шаблон - это, по сути, еще один элемент управления, который определяет расположение подэлементов, которые связаны с экземпляром класса, которым заполняется список.

В конечном итоге он выглядит очень композиционно и невероятно мощным. Это также очень отличается от модели, к которой привыкло большинство разработчиков, и до тех пор, пока вы не усвоите эту модель, очень часто возникают проблемы, пытаясь сделать что-то так, как в Windows Forms / и т. Д.

Как только вы привыкнете к однако возвращение модели к другим API болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

Затем вы дадите этому контейнеру шаблон, который будет использовать для отображения его элементов. Шаблон - это, по сути, еще один элемент управления, который определяет расположение подэлементов, которые связаны с экземпляром класса, которым заполняется список.

В конечном итоге он выглядит очень композиционно и невероятно мощным. Это также очень отличается от модели, к которой привыкло большинство разработчиков, и до тех пор, пока вы не усвоите эту модель, очень часто возникают проблемы, пытаясь сделать что-то так, как в Windows Forms / и т. Д.

Как только вы привыкнете к однако возвращение модели к другим API болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

Затем вы дадите этому контейнеру шаблон, который будет использовать для отображения его элементов. Шаблон - это, по сути, еще один элемент управления, который определяет расположение подэлементов, которые связаны с экземпляром класса, которым заполняется список.

В конечном итоге он выглядит очень композиционно и невероятно мощным. Это также очень отличается от модели, к которой привыкло большинство разработчиков, и до тех пор, пока вы не усвоите эту модель, очень часто возникают проблемы, пытаясь сделать что-то так, как в Windows Forms / и т. Д.

Как только вы привыкнете к однако возвращение модели к другим API болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

которые связаны с экземпляром класса, которым заполняется список.

В конечном итоге это выглядит очень композиционно и до абсурда мощно. Это также очень отличается от модели, к которой привыкло большинство разработчиков, и до тех пор, пока вы не усвоите эту модель, очень часто возникают проблемы, пытаясь сделать что-то так, как в Windows Forms / и т. Д.

Как только вы привыкнете к однако возвращение модели к другим API болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

которые связаны с экземпляром класса, которым заполняется список.

В конечном итоге он выглядит очень композиционно и абсурдно мощным. Это также очень отличается от модели, к которой привыкло большинство разработчиков, и до тех пор, пока вы не усвоите эту модель, очень часто возникают проблемы, пытаясь сделать что-то так, как в Windows Forms / и т. Д.

Как только вы привыкнете к однако возвращение модели к другим API болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

Очень часто возникают проблемы, пытаясь сделать что-то так, как в Windows Forms / и т. д.

Однако, когда вы привыкнете к модели, вернуться к другим API будет болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

Очень часто возникают проблемы при попытке сделать что-то так, как в Windows Forms / и т. д.

Однако, как только вы привыкнете к модели, вернуться к другим API будет болезненно. Не потому, что они внезапно стали тяжелыми, а потому, что вы знаете, как все может быть легко.

11
ответ дан 26 November 2019 в 21:05
поделиться
Другие вопросы по тегам:

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