Сообщение Re: Забиндить на результат асихронной операции от 04.09.2016 10:55
Изменено 04.09.2016 11:13 Qulac
Здравствуйте, ylem, Вы писали:
Y>WPF.
Y>Хочется забиндить элементы UI в WPF на результаты асинхронной операции.
Y>Типа, чтобы забиндил, UI не заблокировался, а когда операция выполнилась, значения в контролах появились.
Y>В идеале хочется, чтобы операция возвращала сложную структуру (класс), и несколько контролов биндились на разные свойства этого класса.
Y>Ко всему этому хочется простой способ отобразить в UI, что, типа еще считается (с анимацией если совсем просто, или без).
Y>Есть какой-нибудь более или менее конвеншенал способ это делать?
Y>Первое, что приходит в голову, это объект из ViewModel создать "сразу", а когда данные появятся пусть объект кидает PropertyChanged.
Y>Еще нагуглил вот, но не уверен, на сколько это можно тащить в продашкен-код.
1. Делаем в вьюшке свойство типа object — это свойство будет устанавливаться стразу перед началом длительной операции.
2. Делаем два шаблона данных, один — для типа object, второй для вашей сложной структуры в виде класса. Первый шаблон будет показываться во время выполнения операции, что типа прогрес-полосы, тут ваша фантазия.
3. В форму добавляем Label, биндим контент Label на свойство вьюшки и указываем шаблоны данных.
Работает это все так: вьюшка сразу возвращает пустой объект, затем после выполнения объект нужного класса, в label автоматом в зависимости от типа будет подставляться нужный шаблон с контролами.
Y>WPF.
Y>Хочется забиндить элементы UI в WPF на результаты асинхронной операции.
Y>Типа, чтобы забиндил, UI не заблокировался, а когда операция выполнилась, значения в контролах появились.
Y>В идеале хочется, чтобы операция возвращала сложную структуру (класс), и несколько контролов биндились на разные свойства этого класса.
Y>Ко всему этому хочется простой способ отобразить в UI, что, типа еще считается (с анимацией если совсем просто, или без).
Y>Есть какой-нибудь более или менее конвеншенал способ это делать?
Y>Первое, что приходит в голову, это объект из ViewModel создать "сразу", а когда данные появятся пусть объект кидает PropertyChanged.
Y>Еще нагуглил вот, но не уверен, на сколько это можно тащить в продашкен-код.
1. Делаем в вьюшке свойство типа object — это свойство будет устанавливаться стразу перед началом длительной операции.
2. Делаем два шаблона данных, один — для типа object, второй для вашей сложной структуры в виде класса. Первый шаблон будет показываться во время выполнения операции, что типа прогрес-полосы, тут ваша фантазия.
3. В форму добавляем Label, биндим контент Label на свойство вьюшки и указываем шаблоны данных.
Работает это все так: вьюшка сразу возвращает пустой объект, затем после выполнения объект нужного класса, в label автоматом в зависимости от типа будет подставляться нужный шаблон с контролами.
Здравствуйте, ylem, Вы писали:
Y>WPF.
Y>Хочется забиндить элементы UI в WPF на результаты асинхронной операции.
Y>Типа, чтобы забиндил, UI не заблокировался, а когда операция выполнилась, значения в контролах появились.
Y>В идеале хочется, чтобы операция возвращала сложную структуру (класс), и несколько контролов биндились на разные свойства этого класса.
Y>Ко всему этому хочется простой способ отобразить в UI, что, типа еще считается (с анимацией если совсем просто, или без).
Y>Есть какой-нибудь более или менее конвеншенал способ это делать?
Y>Первое, что приходит в голову, это объект из ViewModel создать "сразу", а когда данные появятся пусть объект кидает PropertyChanged.
Y>Еще нагуглил вот, но не уверен, на сколько это можно тащить в продашкен-код.
1. Делаем в viewModel свойство типа object — это свойство будет устанавливаться стразу перед началом длительной операции.
2. Делаем два шаблона данных, один — для типа object, второй для вашей сложной структуры в виде класса. Первый шаблон будет показываться во время выполнения операции, что типа прогрес-полосы, тут ваша фантазия, второй — отображать вашу структуры данных.
3. В форму добавляем Label, биндим контент Label на свойство viewModel и указываем шаблоны данных.
Работает это все так: вьюшка сразу возвращает пустой объект, затем после выполнения объект нужного класса, в label автоматом в зависимости от типа будет подставляться нужный шаблон с контролами.
Y>WPF.
Y>Хочется забиндить элементы UI в WPF на результаты асинхронной операции.
Y>Типа, чтобы забиндил, UI не заблокировался, а когда операция выполнилась, значения в контролах появились.
Y>В идеале хочется, чтобы операция возвращала сложную структуру (класс), и несколько контролов биндились на разные свойства этого класса.
Y>Ко всему этому хочется простой способ отобразить в UI, что, типа еще считается (с анимацией если совсем просто, или без).
Y>Есть какой-нибудь более или менее конвеншенал способ это делать?
Y>Первое, что приходит в голову, это объект из ViewModel создать "сразу", а когда данные появятся пусть объект кидает PropertyChanged.
Y>Еще нагуглил вот, но не уверен, на сколько это можно тащить в продашкен-код.
1. Делаем в viewModel свойство типа object — это свойство будет устанавливаться стразу перед началом длительной операции.
2. Делаем два шаблона данных, один — для типа object, второй для вашей сложной структуры в виде класса. Первый шаблон будет показываться во время выполнения операции, что типа прогрес-полосы, тут ваша фантазия, второй — отображать вашу структуры данных.
3. В форму добавляем Label, биндим контент Label на свойство viewModel и указываем шаблоны данных.
Работает это все так: вьюшка сразу возвращает пустой объект, затем после выполнения объект нужного класса, в label автоматом в зависимости от типа будет подставляться нужный шаблон с контролами.