Почему может не работать wpf

WPF почему не работает программа

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Почему на WPF не работает
TcpClient client; StreamReader sr; public Window1() < InitializeComponent();.

Программа WPF не работает на другом компьютере
В общем так, я создал программу на WPF, собрал Release-версию, и при помощи установщика.

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает
почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает. Имею.

Почему не работает программа?
Как сделать чтобы работала программа?? Очень срочно нужно!! Условие и моя программа в файле!

Решение

Когда не работает, нормальные люди указывают признаки того, что именно не работает, и как должно работать по их мнению.

У вас непонятно, где кнопка к обработчик события подключается.

Программа не работает, почему?
почему не работает программа? //Найдите сумму членов ряда S = 1 + 1/2 + 1/4 + 1/8 + . .

Почему программа Работает?
Объясните пожалуйста, как это может работать? Определять переменную вроде можно только один раз. А.

Почему не работает программа?
Мне необходимо получить доступ к переменной, которая находится в другом коде, но у меня не.

Почему не работает программа?
Пожалуйста, подскажите, почему программа при введении 1 или 2 ничего не выводит? #include.

Не работает программа, почему?
Программа должна запоминать 2 координаты(«х» и «у»)(если operation == 0) и выводить их(в данной.

Почему программа не работает?
Здраствуйте, я решил изучить с++, делал все упражнения по бесплатным урокам Михаила Майорова, но.

Источник

WPF еще не умер?

Последнее время смотрю по гиту у многих есть проекты WPF. У многих последние обновления были в течение последнего года. Отсюда вопрос, неужели ещё перспективно учиться работать с WPF?

Я последний раз работал с WPF года 3 назад и был в большом восторге, от того что видел как просто можно использовать практически одну и ту же xaml-верстку в desktop-приложениях (wpf), web (silverlight) и mobile (windows-phone). Курил ExpressionBlend

и все закончилось тем, что я пришел к выводам,
— если хочешь писать красивые desktop приложения — то используй DevExpress, а не WPF
— если хочешь писать мобильные приложения — используй Xamarin, а не WindowsPhone
— если хочешь писать web-приложения — используй ASP.NET MVC, а не Silverlight

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

  • Вопрос задан более трёх лет назад
  • 2868 просмотров

и вообще .. спрашивая о WPF, зачем вы притягиваете ксамарин и силверлайт?

у них ЦЕЛЕВЫЕ СРЕДЫ не пересекаются ни разу

ну а с девками(экспресс 😉 я вам уже много че сказал.. (заикнетесь — наговорю не меньше

WPF умер. C# на клиенте тоже умер. C++ и Qt на клиенте умер. Нативные приложения и приближенные к ним (WPF/WinForms) вообще умерли. Нативные приложения пишут только разработчики ОС, и то до тех пор пока не перепишут их на Электроне. Электрон скоро будет модулем ядра / драйвером для повышения производительности HTML-интерфейсов.

Просыпаюсь в холодном поту
Фух, это всего лишь сон.

то используй DevExpress, а не WPF

Это как понимать? Я знаю что у DevExpress есть наборы компонентов для разных UI-технологий, а чтобы у них было своё UI-решение, не базирующееся на чём-то вроде WPF/WinForms/HTML — не слышал.

используй ASP.NET MVC, а не Silverlight

Это как понимать? Я знаю что у DevExpress есть наборы компонентов для разных UI-технологий, а чтобы у них было своё UI-решение, не базирующееся на чём-то вроде WPF/WinForms/HTML — не слышал.

Смысл в том, что в DevExpress дает возможности стилизовать и украсить свое приложение разными таблицами и прочими компонентами. Простой Winforms скучен. А в WPF все очень круто с этим.

используй ASP.NET MVC, а не Silverlight

Т.е. генерировать только статический UI только на сервере? Почему вы сравниваете Silverlight (который кстати и правда умер, уже точно) с ASP.NET MVC, а не с HTML или HTML + React наприме

Silverlight в том смысле, что позволяет делать клиент-серверные приложения. Ну и решать соответствующие задачи.

Viktor Ilukhin, что то с ног до головы перевернулись. противоречите себе

уж определитесь любите XAML или нет. (кстати XAMARIN тоже на XAML основан)

В чем именно я себе противоречу?

Viktor Ilukhin, в моем представлении xamarin, такой же отпрыск, той же ветки, что silverlight.. но раз уж на то пошло, и более строго их различать — silverlight тоже НЕ wfp, на xaml все родство заканчивается..

и DmitriyEntelis скорее прав, я думаю xamarin не на много более жизнеспособен, чем silverlight

при всем при этом, wpf на десктопе, переживет их всех ))

не то что бы ставку предлагаю сделать. но если будет жив этот ресурс, через год, и все участники захотят вспомнить мнения годовой давности — готов принять участие в ревизии «так кто жив а кто мертв?»* через год ))

Читайте также:  Как понять что духовка сломалась

* — естественно, речь о перечисленных вами технологиях, а их объединяет.. только XAML, но ни чего более ))

* — естественно, речь о перечисленных вами технологиях, а их объединяет.. только XAML, но ни чего более ))

mindtester, их еще объединяет одна среда разработки и один язык программирования.

Смысл в том, что в DevExpress дает возможности стилизовать и украсить свое приложение разными таблицами и прочими компонентами. Простой Winforms скучен. А в WPF все очень круто с этим.

и снова девки. как ни странно, для форм они поставляют (имхо, даже перепроверять не стану) даже больше контролов..

но о формах — вы может ни когда не искали мордочки? прелесть форм в том, что когда не надо продвинутого биндинга (а это круто именно в wpf) то сляпать на формах и правда быстрее..

ну и мордочки к ним есть, начиная от простейших, заканчивая очень даже ниче так (бесплатные!):
— https://github.com/N-a-r-w-i-n/MetroSet-UI
— https://github.com/Wagnerp/Krypton-NET-4.7
.. и бонус
— чарты «из коробки»
— ну и наконец — работа с треем — это фишка именно форм

Viktor Ilukhin, для C# уже давно больше чем одна среда (хотя VS лучшая), но подмножества языка, отличаются — для XAMARIN вы точно не сможете использовать фишки C#7.*

.. и то что ксамарин тянет всю андроид студию. это просто ужас

виртуалка с юбунту на виртуалбоксе, с INTELLIJ, позволит не меньше свободы в кодинге*, но будет весить на диске, меньше чем ксамарин с прибабасами.. (жуть просто..

* — да да, я по Kotlin

проект не выглядит активным. последний комит полгода назад. есть еще 14 форков. а еще есть фраза «NET Framework 2.0 or higher» (хотя у меня поддержка 3,5 все еще включена, есть пара стареньких прог)

. вспомнил поодержка разработаки 3,5 в студии не стоит

а посмотрите вот эту «мордочку» (я может спутал ссылки во время ответа)

Но все же я вижу, что люди кодят на WPF

не не.. не обращайте внимания.. умер, умер..

ps вообще то в WPF реализована одна из лучших и надежнейших в мире, систем биндинга данных, в корпоративном секторе (виндовом конечно) его не скоро кто то потеснит

если хочешь писать красивые desktop приложения — то используй DevExpress, а не WPF

это место особо доставляет.. а ни че что «девки» поставляют практически полный набор своих контролов под WPF? они себя не унижают этим. случайно?

ppps исправлено.. неоднократно.. извиняйте ))

резюме — вы не правильно, и с не верным акцентом, сформулировали вопрос.. ))..

а вместо спасибо- ну.. тут галочки разные можно ставить — «ответ решение» или «нравится».. и даже «камент нравится» ;))

— если хочешь писать мобильные приложения — используй Xamarin, а не WindowsPhone

Если хочешь писать мобильные приложения — пиши их либо под iOS (Swift/Objective-C), либо под Android(Java).
Windows на телефонах мертв.
Мультиплатформенные инструменты кривы и практически не востребованы.

— если хочешь писать web-приложения — используй ASP.NET MVC, а не Silverlight

Мультиплатформенные инструменты кривы и практически не востребованы

Я вашу позицию понимаю. Я не спорю, что для крутых массовых приложений лучше использовать Swift/Objective-C/Java, и для качественных веб-приложений лучше использовать PHP/Ruby/Python/Node.js

Моим основным интересом долгое время было решение корпоративных задач в B2B-секторе. Уж очень много там идей для автоматизации и самое главное неудовлетворенного спроса.

Отсюда я и выбираю наиболее практичные инструменты, которые позволят быстро выработать решение при существующих ресурсах (чаще всего это было отдел разработки с C# программистами).

И для решения большинства задач автоматизации может легко может хватить мобильного приложения на Xamarin+WCF или сайта на ASP.MVC. Как правило всех интересует чтобы работало без ошибок и было выполнено в срок.

Конечно, при росте нагрузки понадобиться в какой-то момент перейти на Swift/Java/Php/Python. Но к тому времени уже будет рабочий прототип.

Я не считаю, что мы спорим. Просто я смотрю более узко в области своих задач которыми я сталкивался. Чаще всего нанимать новых программистов php под отдельный проект было не вариант. Поручали тем что есть 🙂

Дмитрий Энтелис, на вашем месте я тоже бы не стал использовать Xamarin. Да и на своем месте Сейчас я бы тоже этого делать бы не стал. Сейчас я сделал свой выбор в сторону веб-приложений с адаптивной версткой+jQuery фишки.

А 3 года назад я пришел к таким выводам о Xamarin т.к. не очень хорошо представлял всех возможностей ASPMVC, ui-bootstrap наборов, SignalR и пр. В то время больше занимался backend.

Источник

Справочный работник не работает WPF

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

поэтому я решил использовать фона рабочего и обработать его в фоновом режиме.

Но это не работает. через debug, программа останавливается в Render3D() . Это не исключение. Это похоже на return .

Другим словом он ничего не делает после достижения Render3D() и просто вернется.

Читайте также:  Почему у меня не работают рунические формулы

(Я не говорю, что он вернется. Потому что я не уверен, но поведение такое же, как и возвращение)

Render3D() отлично работает без фоновой обработки, но будет заморожен в течение некоторого времени.

Render3D() находится в Partial классе MainWindow Потому что есть много методов, поэтому я решил их разделить.

Также как я могу использовать ReportProgress вне backgroundWorker1_DoWork . например, в Render3D().

Последнее: я хочу знать, как показать пользователю, сколько из процесса сделано.

Решено !:

Проблема заключалась в том, что я установил Viewport3D внутри Render3D()

Я отделил его от Render3D и проблема исправлена. благодаря Хенку Холтерману за правильный ответ.

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

эти задачи должны выполняться в основном потоке.

ниже — неверный код, который заставил фонового рабочего прекратить работу.

Источник

Быстрый старт с WPF. Часть 1. Привязка, INotifyPropertyChanged и MVVM

По разным причинам большинство из нас использует десктопные приложения, как минимум, браузер 🙂 А у некоторых из нас возникает необходимость в написании своих. В этой статье я хочу пробежаться по процессу разработки несложного десктопного приложения с использованием технологии Windows Presentation Foundation (WPF) и применением паттерна MVVM. Желающих продолжить чтение прошу под кат.

Думаю, необязательно говорить, что WPF — это разработка Microsoft 🙂 Технология эта предназначена для разработки десктопных приложений под Windows, начиная с Windows XP. Почему именно так? Это связано с тем, что WPF работает поверх платформы .NET, минимальные требования которой — Windows XP и новее. К сожалению, WPF не работает на других платформах, хотя есть шансы, что в ближайшее время это изменится: в стадии разработки находится WPF-based фреймворк Avalonia.

В чём особенность WPF?

Два основных отличия WPF от других средств построения десктопных приложений:

  • Язык разметки XAML, предназначенный для разметки самого интерфейса окна.
  • Рендеринг посредством DirectX, аппаратное ускорение графики.

Я не буду углубляться в подробности, т.к. это не совсем тема статьи. Если интересно, то гуглить XAML, WPF rendering, milcore.dll и DirectX 🙂

О чём эта статья?

Эта статья содержит пример приложения, построенного на технологии WPF:

Я постараюсь ориентировать материал статьи в практическую сторону в стиле «повторяй за мной» с пояснениями.

Что нам понадобится для повторения статьи?

Небольшой опыт разработки на C# 🙂 Как минимум, нужно хорошо понимать синтаксис языка. Также понадобится Windows-машина (в примерах будет Win 10) с установленной на ней Visual Studio (в примерах будет 2017, есть бесплатная Community версия). При установке VS необходимо будет включить поддержку десктопной разработки под платформу .NET

Так же в этом разделе я опишу создание проекта.

Запускаем VS, создаём новый проект, тип приложения выбираем WPF App (.NET Framework) (можно ввести в строке поиска справа вверху), называем как угодно.

После создания нового проекта откроется окно редактора интерфейса, у меня оно выглядит так

Внизу находится редактор разметки, вверху — предпросмотр интерфейса окна, но можно поменять относительное расположение редактора кода и предпросмотра интерфейса так, что они будут располагаться в горизонтальном порядке, с помощью вот этих кнопок (справа на границе двух областей):

Перед тем, как начать

Элементы окна (их ещё называют контрОлами от слова Control) должны размещаться внутри контейнера или внутри другого элемента типа ContentControl. Контейнер — это специальный контрол, позволяющий разместить внутри себя несколько дочерних контролов и организовать их взаимное расположение. Примеры контейнеров:

  • Grid — позволяет организовать элементы по столбцам и строкам, ширина каждого столбца или строки настраивается индивидуально.
  • StackPanel — позволяет расположить дочерние элементы в одну строку или столбец.

Есть и другие контейнеры. Поскольку контейнер тоже является контролом, то внутри контейнера могут быть вложенные контейнеры, содержащие вложенные контейнеры и так далее. Это позволяет гибко располагать контролы относительно друг друга. Так же с помощью контейнеров мы можем не менее гибко управлять поведением вложенных контролов при изменении размеров окна.

MVVM и интерфейс INotifyPropertyChanged. Копия текста.

Итогом этого примера станет приложение с двумя контролами, в одном из которых можно редактировать текст, а в другом только просматривать. Изменения из одного в другой будут переходить синхронно без явного копирования текста с помощью привязки (binding).

Итак, у нас есть свежесозданный проект (я назвал его Ex1), перейдём в редактор разметки и первым делом заменим контейнер, указанный по умолчанию ( ) на . Этого контейнера будет достаточно, т.к. нам понадобится расположить всего лишь два контрола один над другим. Укажем явно, каким образом будут располагаться компоненты, добавив свойство Orientation=»Vertical». Добавим внутрь стек панели парочку элементов: поле для ввода текста и поле для отображения текста. Поскольку эти контролы не будут содержать вложенного кода, можно описать их самозакрывающимся тегом (см. код ниже). После всех вышеописанных процедур код описания контейнера и вложенных контролов должен принять такой вид:

Теперь сосредоточимся на цели этого примера. Мы хотим, чтобы при наборе текста в текстбоксе этот же текст синхронно отображался в текстблоке, избежав при этом явной операции копирования текста. Нам понадобится некая связующая сущность, и вот тут-то мы и подошли к такой штуке, как привязка (binding), о которой было сказано выше. Привязка в терминологии WPF — это механизм, позволяющий связывать некоторые свойства контролов с некоторыми свойствами объекта C#-класса и выполнять взаимное обновление этих свойств при изменении одной из частей связки (это может работать в одну, в другую или в обе стороны сразу). Для тех, кто знаком с Qt, можно провести аналогию слотов и сигналов. Чтобы не растягивать время, перейдём к коду.

Читайте также:  Каток не работает вибрация

Итак, для организации привязки нужны свойства контролов и некое свойство некоего C#-класса. Для начала разберёмся с XAML-кодом. Текст обоих контролов хранится в свойстве Text, поэтому добавим привязку для этих свойств. Делается это так:

Мы сделали привязку, но пока непонятно к чему 🙂 Нам нужен объект какого-то класса и какое-то свойство в этом объекте, к которому будет выполнена привязка (как ещё говорят, на которое нужно забиндиться).

Так что это за класс? Этот класс называется вьюмоделью (view model) и служит как раз связующим звеном между view (интерфейсом или его частями) и model (моделью, т.е. теми частями кода, которые отвечают за логику приложения. Это позволяет отделить (в какой-то степени) логику приложения от интерфейса (представления, view) и называется паттерном Model-View-ViewModel (MVVM). В рамках WPF этот класс также называется DataContext.

Однако, просто написать класс вьюмодели недостаточно. Нужно ещё как-то оповещать механизм привязки о том, что свойство вьюмодели или свойство вью изменилось. Для этого существует специальный интерфейс INotifyPropertyChanged, который содержит событие PropertyChanged. Реализуем этот интерфейс в рамках базового класса BaseViewModel. В дальнейшем все наши вьюмодели мы будем наследовать от этого базового класса, чтобы не дублировать реализацию интерфейса. Итак, добавим в проект каталог ViewModels, а в этот каталог добавим файл BaseViewModel.cs. Получим такую структуру проекта:

Код реализации базовой вьюмодели:

Создадим для нашего класса MainWindow свою вьюмодель, унаследовавшись от базовой. Для этого в том же каталоге ViewModels создадим файл MainWindowViewModel.cs, внутри которого будет такой код:

Шикарно! Теперь нужно добавить в эту вьюмодель свойство, на которое будем биндить текст наших контролов. Поскольку это текст, тип этого свойства должен быть string:

В итоге получим такой код

Так, кажется, справились. Осталось забиндиться на это свойство из вьюхи и готово. Давайте сделаем это прямо сейчас:

Ништяк, запускаем проект, набираем текст в текстбокс иииии… ничего не происходит))) Ну, ничего страшного, на самом деле мы идём правильной дорогой, просто пока ещё не дошли до нужной точки.

Предлагаю на минутку остановиться и подумать, чего же нам не хватает. Вьюха у нас есть. Вьюмодель тоже. Свойства вроде забиндили. Нужный интерфейс реализовали. Проделали кучу работы ради копирования жалкой строчки текста, за что нам это. 111

Ладно, шутки в сторону. Мы забыли создать объект вьюмодели и кое-что ещё (об этом позже). Сам класс мы описали, но это ничего не значит, ведь у нас нет объектов этого класса. Ок, где нужно хранить ссылку на этот объект? Ближе к началу примера я упомянул некий DataContext, используемый в WPF. Так вот, у любой вью есть свойство DataContext, которому мы можем присвоить ссылку на нашу вьюмодель. Сделаем это. Для этого откроем файл MainWindow.xaml и нажмём F7, чтобы открыть код этой вьюхи. Он практически пустой, в нём есть только конструктор класса окна. Добавим в него создание нашей вьюмодели и поместим её в DataContext окна (не забываем добавить using с нужным неймспейсом):

Это было просто, но этого всё равно не хватает. По-прежнему при запуске приложения никакой синхронизации текста не происходит. Что ещё нужно сделать?

Нужно вызвать событие PropertyChanged при изменении свойства SynchronizedText и сообщить вьюхе о том, что она должна следить за этим событием. Итак, чтобы вызвать событие, модифицируем код вьюмодели:

Что мы тут сделали? Добавили скрытое поле для хранения текста, обернули его в уже существующее свойство, а при изменении этого свойства не только меняем скрытое поле, но и вызываем метод OnPropertyChanged, определённый в базовой вьюмодели и вызывающий событие PropertyChanged, объявленное в интерфейсе INotifyPropertyChanged, так же реализованное в базовой вьюмодели. Получается, что при каждом изменении текста возникает событие PropertyChanged, которому передаётся имя свойства вьюмодели, которое было изменено.

Ну, почти всё, финишная прямая! Осталось указать вьюхе, что оно должно слушать событие PropertyChanged:

Помимо того, что мы указали, по какому триггеру должно происходить обновление, мы так же указали, в какую сторону это обновление отслеживается: от вью к вьюмодели или наоборот. Поскольку в текстбоксе мы вводим текст, то нам интересны изменения только во вью, поэтому выбираем режим OneWayToSource. В случае с текстблоком всё ровно наоборот: нам интересны изменения во вьюмодели, чтобы отобразить их во вью, поэтому выбираем режим OneWay. Если бы нам нужно было, чтобы изменения отслеживались в обе стороны, можно было не указывать Mode вообще, либо указать TwoWay явно.

Итак, запускаем программу, набираем текст и voi-la! Текст синхронно меняется, и мы нигде ничего не копировали!

Спасибо за внимание, продолжение следует. Будем разбираться с DataTemplate и паттерном Command.

Источник

Оцените статью