Как сделать перетаскивание окна wpf

Перетаскивание пользовательских окон (и других элементов) не нарушая MVVM и привязка данных к Canvas

Пишу приложение для моделирования

Есть два окна которые должны быть запущенны два потока (чтобы отрисовка не мешала расчётам), одно окно, основываясь на настройки, производит расчёты, а второе окно при помощи Canvas отображает их. Хочу убрать привычную рамку (windowstyle) у окна и сделать свою для возможности отображения некоторых данных (например, итерации) и отдать максимум места canvas на отображения итерации, но хочу оставить возможность изменять размер окна и перемещать его, как это можно сделать не нарушая mvvm? Управление окном (открыть/закрыть/сменить итерацию) хочу оставить на первом окне с настройками.

MVVM паттерн и привязка данных
Доброго времени суток! Относительно недавно начал изучать данный паттерн и технологию в целом. Не.

Перетаскивание элементов на форме и привязка к элементу
На форме есть фигура (Bevel) и компонент PaintBox. Нужно сделать так, чтобы компонент PaintBox.

Как сделать перетаскивание окна wpf. Смотреть фото Как сделать перетаскивание окна wpf. Смотреть картинку Как сделать перетаскивание окна wpf. Картинка про Как сделать перетаскивание окна wpf. Фото Как сделать перетаскивание окна wpfМассив. Расположить в порядке возрастания простые числ, не нарушая порядка следования других элементов
Массив А(N) считаем как заданный пользователем.

Как сделать перетаскивание окна wpf. Смотреть фото Как сделать перетаскивание окна wpf. Смотреть картинку Как сделать перетаскивание окна wpf. Картинка про Как сделать перетаскивание окна wpf. Фото Как сделать перетаскивание окна wpfПривязка данных без использования паттерна MVVM
Здраствуйте, интересует вопрос как сделать такую привязку. Имеется класс Game.cs: class Game.

furrycat,
Почему не хотите использовать библиотеки для отрисовки графики? LiveChart великолепно подходит в реализации MVVM.

Как управлять окнами не нарушая MVVM.
Создаёте интерфес IWindow, в нём пишите сигнатуры необходимых методов(свернуть, закрыть. ). В главном проекте создаёте своё кастомное окно, для которого делаете свой стиль (возможный пример) и реализуете интерфейс у окна. Можно конечно написать это и в xaml.cs у необходимой View, но это не так красиво, хотя я бы сказал что допустимо.

В App.xaml.cs переопределяете OnStartup, создаёте окно, создаёте ViewModel, в ViewModel передаёте Ваш интерфейс, а там дело техники его использование)

furrycat, если это 2-3 класса, то определённо нет. Проще «стащить» их

Если Вы касательно LiveChart, то это библиотека отрисовки графиков

furrycat, перемещайте окно мышью Как сделать перетаскивание окна wpf. Смотреть фото Как сделать перетаскивание окна wpf. Смотреть картинку Как сделать перетаскивание окна wpf. Картинка про Как сделать перетаскивание окна wpf. Фото Как сделать перетаскивание окна wpf

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

Всё что знают VM:
— Пришла от View команда передать данные. VM собирает нужные данные и вызывает метод Модели, в который эти данные передаёт.
— В Модели возникло событие. VM проверяет состояние Модели (через методы Модели) и если нужно, сообщает View, что надо изменить Представление (через интерфейсы INPC, INCC и ICommand).

Больше ничего быть в VM не должно.

Для вашей задачи.
Одна VM вызвала методы Модели для расчётов.
Если состояние Модели после расчётов меняется, то в Модели возникает событие,
Вторая VM прослушивает эту же Модель и получив событие от неё, обновляет данные нужные для View.

Добавлено через 3 минуты
furrycat, в некоторых случаях используется Менеджеры или Шины Сообщений.
Они есть во многих фрамеворках для WPF+MVVM.
Но их использование, при правильном конструировании приложения, оправдано исключительно редко.
Данные должны передаваться через Модель.

furrycat, вы о чём вообще? Вы хотите перемещать окно приложения из кода?
Создаёте интерфейс IMoveWindow, реализуете в окне, после чего передаёте окно как интерфейс в ViewModel/Model.

Начните писать код, либо раскройте более полно Вашу задумку. Для чего перемещать окно из кода?

furrycat, Вы пробовали переопределять стиль окна? Правильно переопределённый стиль будет обладать этим свойством.
Что-то мне подсказывает что Вы да же не брались за поиск стиля.

Почему мы не можем на прямую подвязаться к Model из View?
Что бы иметь гибкость, что бы логика была отдельно от отображения, а разное отображение требует разных принципов которые и описывает ViewModel. Захатите Вы перенести логику приложения WPF Xamarin. Подключили Model, написали View и ViewModel для Xamarin и запустили. В настоящих приложениях самая большая проблема написать Model, View и ViewModel это %20 от всего объёма.

Что есть не правильно?
Когда вы логику загрузки файла пишите в ***.xaml.cs. Проблема возникает, тогда мы не можем перенести логику на другую платформу по тому что логика связана с текущей платформой View.

О ViewModel
В ViewModel обязана размещаться логика специфичная для отображения, в этом сущность ViewModel.
К примеру у Вас есть Коллекция из кучи элементов, но Вы уверены что надо отобразить только последних элемента, Вы в ViewModel в его аксессоре(get) пишите через Linq что хотите взять только последние 3 элемента, они и будут отображены в ViewModel.
В ViewModel нельзя прописывать элементы относящиеся к View, для этого есть конверторы, которые к примеру, цвета перечисления переводят в SolidColorBrush.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *