|
Окно с полями и кнопками Изменить-Сохранить-Отменить
|
|||
---|---|---|---|
#18+
Есть у меня простая форма на WinForms с полями и кнопками Изменить, Сохранить, Отменить. Теперь ее надо перенести на WPF. Вопрос: как, используя binding и прочие преимущества WPF, сделать тоже самое: пользователь нажал "Изменить", поля стали не ReadOnly, поменял что-либо, далее - либо отменил изменения и все вернулось обратно из модели на форму, или сохранил - все сохранилось в модели (и пошла запись в БД). Считать из БД и записать в нее - тут все ок, а как в WPF по-простому заполнить текстовое поле/комбобокс и прочее и потом отменить все изменения. На WinForms я вручную делал заполнение (МодельНаФорму, ФормуВМодель), но в WPF же вся фишка в биндинге. Есть класс, объект которого заполняется из MSSQL. В конструкторе окна я делаю привязку данных. В окне есть 2 текстовых поля и комбобокс, к которым я сделал binding в XAML'e. Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
XAML: Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 11:08 |
|
Окно с полями и кнопками Изменить-Сохранить-Отменить
|
|||
---|---|---|---|
#18+
Qwe.Qwe1пользователь нажал "Изменить", поля стали не ReadOnlyгрубый но простой метод - назначить данный стиль элементу-контейнеру, содержащему все редактируемые поля: Код: xml 1. 2. 3. 4. 5. 6. 7.
тогда переключая в ViewModel-и свойство EditingMode вы будете управлять доступностью элементов для редактирования ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 11:28 |
|
Окно с полями и кнопками Изменить-Сохранить-Отменить
|
|||
---|---|---|---|
#18+
Qwe.Qwe1В конструкторе окна я делаю привязку данных.а зачем? Что мешает прописать все в XAML? ВедьQwe.Qwe1в WPF же вся фишка в биндинге. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 11:29 |
|
Окно с полями и кнопками Изменить-Сохранить-Отменить
|
|||
---|---|---|---|
#18+
Shocker.ProQwe.Qwe1В конструкторе окна я делаю привязку данных.а зачем? Что мешает прописать все в XAML? ВедьQwe.Qwe1в WPF же вся фишка в биндинге.хотя, судя по примеру, у вас и прописано все в XAML (кстати, используйте для оформления XAML тэг XML, а не C#). Тогда не очень понятно, что именно вызвало сложности? Что касается отмены - я обычно не парюсь и при отмене просто заново загружаю карточку из БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 11:33 |
|
Окно с полями и кнопками Изменить-Сохранить-Отменить
|
|||
---|---|---|---|
#18+
1) По поводу смены ReadOnly: а если надо у только некоторых полей менять состояние, в том числе у кнопок. По умолчанию только "Изменить" доступна, а при ее нажатии - она становится ReadOnly, а 2 другие - наоборот; ну, например, поле с ID менять не надо. К чему этот стиль применить тогда? 2) Как в разметке сделать: Код: c# 1.
3) Я и комбобокс тоже в коде привязываю. Может это лучше в разметке делать? Код: c# 1. 2. 3. 4. 5. 6.
4) На WinForms я объект модели передавал прямо в форму. Здесь же я указываю "this.DataContext = ...", делаю биндинг. Можно ли потом как-то вызывать методы объекта модели? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:06 |
|
Окно с полями и кнопками Изменить-Сохранить-Отменить
|
|||
---|---|---|---|
#18+
Qwe.Qwe11) По поводу смены ReadOnly: а если надо у только некоторых полей менять состояние, в том числе у кнопок. По умолчанию только "Изменить" доступна, а при ее нажатии - она становится ReadOnly, а 2 другие - наоборот; ну, например, поле с ID менять не надо. К чему этот стиль применить тогда?Ну кнопки во-первых должны быть вне контейнера, к которому применяется этот стиль. Или можно назначить кнопкам свой стиль, пусть даже и x:Null. Или создать именованный стиль и применять целевым образом к нужным элементам (в том числе и с использованием BasedOn, если нужно). В общем, идея есть, простор для творчества большой. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:22 |
|
Окно с полями и кнопками Изменить-Сохранить-Отменить
|
|||
---|---|---|---|
#18+
Qwe.Qwe12) Как в разметке сделать: Код: c# 1.
Код: xml 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:23 |
|
Окно с полями и кнопками Изменить-Сохранить-Отменить
|
|||
---|---|---|---|
#18+
Qwe.Qwe13) Я и комбобокс тоже в коде привязываю. Может это лучше в разметке делать?а что мешает? Qwe.Qwe14) На WinForms я объект модели передавал прямо в форму. Здесь же я указываю "this.DataContext = ...", делаю биндинг. Можно ли потом как-то вызывать методы объекта модели?да, это делается через Command Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:26 |
|
|
start [/forum/topic.php?fid=21&msg=39252659&tid=1440665]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
135ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 244ms |
0 / 0 |