#windows-phone-7 #colors #viewmodel #datacontext
#windows-phone-7 #Цвет #viewmodel #datacontext
Вопрос:
Я хотел бы знать, как установить единую ViewModel в рамках одного пользовательского элемента управления. Я использую контейнер Items внутри пользовательского элемента управления (привязанный к ItemsSource), и, похоже, он не обновляется с заменой кода DataContext (на созданный с помощью кода экземпляр ViewModel)
Что я пытаюсь сделать, так это изменить цвет переднего плана каждого текстового элемента в UserControl с привязкой к данным, а элементы внутри Itemscontrol, похоже, не меняются. принудительное изменение datacontext удалило элементы коллекции с отображения.
Я думаю, что меня концептуально неправильно поняли здесь. кто-нибудь может помочь?
Комментарии:
1. На самом деле проблема заключается в использовании пользовательских цветов в UserControls. Это работает нормально, если я назначаю DataContext разным экземплярам ViewModel в исходном коде до тех пор, пока заполненный ItemsControl не будет назначен другому Itemsource. Каков наилучший способ добиться такого поведения?
Ответ №1:
Я мог бы решить проблему, используя раскадровки для изменения цвета, но проблема все еще оставалась той же. Конечным решением было получить доступ к ресурсам внутри шаблонов, что возможно путем просмотра визуального дерева, как показано в этом руководстве
http://windowsphonegeek.com/tips/how-to-access-a-control-placed-inside-listbox-itemtemplate-in-wp7
Однако странная вещь заключалась в том, что мне нужно было искать свой объект внутри возвращаемого исходного объекта, поскольку он, похоже, возвращает сгенерированный системой объект, который вы сами не видите. Поиск ответа внутри этого помог. Кроме того, общей идеей могло бы быть включение их в список элементов для более легкого доступа позже, но MS необходимо исправить способ выполнения этого незамедлительно.
Комментарии:
1. Это сработало не так, как планировалось — раскадровка внутри datatemplate, похоже, анимирует только первый элемент в itemcollection.
Ответ №2:
Я бы рекомендовал привязать ItemsSource к свойству в вашей ViewModel.
Комментарии:
1. На самом деле это связано с этим. возможно, именно поэтому его переписывают.
2. Это вообще не работает. Я пытаюсь получить доступ к ForegroundColor от родительского элемента внутри коллекции, привязанной к элементу управления Items. все привязки colorbrush выполняются во время компиляции — я не могу изменить цвет текста в элементах управления внутри коллекции.
3. как получить доступ к цвету в корневом каталоге изнутри Itemtemplate?
4. Похоже, SL5 справится с этим. Зависимость от предка или что-то в этомроде?