WPF: Привязка с нестазированным параметром? (Вопрос новичка)

StackOverflow https://stackoverflow.com/questions/1593446

Вопрос

Это, вероятно, будет очевидно, но я не могу найти лучший путь.

Я хочу показать Todo пользователя в списке. Эти Todo находятся в базе данных и состоят из идентификатора, пользователя и описания.

Пользователь вошел в приложение.

Как я могу получить TODO для этого определенного пользователя и настроить его для привязки к списку?

Я пытался с ObjectDatAprovider, но я не могу понять, как использовать это в сочетании с нестатическими вещами (например, My _DBService, UserId, Language, ...).

Являются ли единственные варианты, чтобы сделать все эти вещи статичными в зависимости от привязки в коде?

Если так, это означает, что ObjectDataprovider не очень полезен, нет? Я нахожу много примеров того, как он используется с жестким параметром, но я вряд ли вижу какую -либо ситуацию, когда мне понадобится такая функциональность.

Это было полезно?

Решение

Я делаю весь свой WPF, используя Модель-View-ViewModel шаблон. Я дал вам одну ссылку, но Google даст вам нагрузки. MVVM, по -видимому, является стандартной шаблоном для WPF. Этот проект Вероятно, сложнее, чем вам нужно, но он хорошо написан и приносит домой использование MVVM.

По сути, вы создаете модель ваших данных. В этом случае вы, вероятно, создали бы простой класс (я назову его Todoitem) с идентификатором свойств, идентификатором пользователя и описанием. Используйте предпочитаемый механизм, чтобы получить их из базы данных. Ссылка на SQL, Entity Framework, стандартный запрос, что угодно.

Затем у вас есть ваш ViewModel - у вас есть экземпляр ViewModel для каждого экземпляра модели: у виртуальной машины есть ссылка на свойства M и «вперед». ViewModel - это то, что вы используете для манипулирования моделью.

Тогда у вас есть ваше мнение - это пользовательский интерфейс. Вы устанавливаете DataContext представления как ViewModel, а затем ваши привязки автоматически связываются с ViewModel. Ваше мнение просто в конечном итоге становится тем, что вы можете увидеть. Вся работа выполняется в ViewModel. Это означает, что это очень легко проверить.

Таким образом, когда вы нажимаете кнопку в вашем представлении, привязки передают это в команду в вашем просмотре, которая манипулирует моделью.

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

Трудно объяснить все это в таком посте. Прочитайте пару статей и посмотрите, что вы думаете. Я все еще довольно новый в этом, но я считаю, что мое чтение о MVVM окупилось.

Другие советы

Хела Томас, Том здесь, из орбита One :)

MVVM - это путь. Я в своем 4 -м проекте, и WPF действительно сияет, если вы используете MVVM. Вы уже пробовали MVC (или MVP, как мы делали на The Recy*Tire), и это хорошее разделение. MVVM делает еще один шаг вперед, так как ViewModel абсолютно ничего не знает о представлении.

Представление связывается с ViewModel, поэтому он имеет ссылку на него (2 способа, очень мощный и работает за пределами типичной демонстрации MS). ViewModel - это просто Poco и является представлением вашей точки зрения, данных + поведение. После того, как вы копаете этот абзац, прохладный термин MVVM не будет иметь никаких секретов.

Я вижу, смогу ли я придумать небольшую демонстрацию. Может, у меня будет время позже. Что я приду к представлению (XAML, File 1), который связывается с ViewModel (файл 2, класс POCO, который не должен ошибаться с кодом позади). Модель может быть тем, что вам нравится (сервисный уровень или непосредственно в репозитории). Используя силу двухстороннего привязки, мы свяжемся с наблюдаемой коллекцией, что означает, что, если мы добавим/удалим/... что -то в коллекцию, представление займет его, не внедряя в нее энергию.

Мои первые 2 проекта WPF были сделаны с Caliburn Micro (см. Codeplex), которая является мощной структурой, основанной на соглашениях. Он откидывает вас от хардкорного WPF (в основном создание свойств тур -зависимости в основном), и вы можете создать что -то относительно быстрое, без полного понимания WPF. Это недостаток себя, но это сработало для меня. По состоянию на проект 3 я сам начал укротить эти свойства зависимости, и это сделает вас лучшим разработчиком WPF.

Я вижу, что вопрос с октября .. Вы нашли хорошее решение?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top