Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
TreeViewItem+ContextMenu в MVMM
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Имеется некая ViewModel. В ней есть древовидная струкутра, которая кидается на TreeView в разметке с заданным шаблоном данных. Во ViewModel есть команда добавления элемента в дерево. Далее я хочу создать контекстное меню для каждого TreeViewItem. Это прописываю в стиле для treeViewItem. Все хорошо. Вопрос: как повешать команду на MenuItemы в контекстном меню? Ведь биндится она на DataContext. А у MenuItem DataContext уже не ViewModel, а TreeViewItem. Да и собственно у самого TreeView контекст - та сама древовидная структура, а не ViewModel. Подскажите, как до команды достучаться? Вариант в code-behind искать нужный DataContext, который равен ViewModel - это понятно. Но хотелось бы без этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2012, 11:26 |
|
||
|
TreeViewItem+ContextMenu в MVMM
|
|||
|---|---|---|---|
|
#18+
Код: xml 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2012, 12:57 |
|
||
|
TreeViewItem+ContextMenu в MVMM
|
|||
|---|---|---|---|
|
#18+
Не понял, что такое ХХХ :) Я правильно понимаю, что PlacementTarget - это родительский элемент для меню? И тогда PlacementTarget.DataContext возвращает все равно TreeViewItem, в котором находится это контекстное меню. нашел вот примерчик: http://www.ikriv.com/blog/?p=434 то есть можно в Tag TreeViewItemов в стиле записывать DataContext (мою ViewModel) и потом к ней обращаться типа: PlacementTarget.Tag... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2012, 13:53 |
|
||
|
TreeViewItem+ContextMenu в MVMM
|
|||
|---|---|---|---|
|
#18+
Алексей К, спасибо Вариант с тегом не очень изящный, но главное, что работает ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2012, 14:07 |
|
||
|
TreeViewItem+ContextMenu в MVMM
|
|||
|---|---|---|---|
|
#18+
Sky DragonИ тогда PlacementTarget.DataContext возвращает все равно TreeViewItem, в котором находится это контекстное меню."Не читайте советских газет" (с) Если всё сделано правильно, то: PlacementTarget == TreeViewItem PlacementTarget.DataContext == ViewModel элемента дерева. PlacementTarget.DataContext.MyCommand == команда, живущая в ViewModel элемента дерева. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2012, 14:39 |
|
||
|
TreeViewItem+ContextMenu в MVMM
|
|||
|---|---|---|---|
|
#18+
Алексей К, PlacementTarget == TreeViewItem (control) PlacementTarget.DataContext == элемент дерева, содержащегося во ViewModel, но не сама ViewModel. А команда лежит во ViewModel. газеты не причем) все проверено вручную ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2012, 07:42 |
|
||
|
TreeViewItem+ContextMenu в MVMM
|
|||
|---|---|---|---|
|
#18+
А если бы ть еще чуть более точным, то PlacementTarget == Header TreeViewItem'а ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2012, 07:49 |
|
||
|
TreeViewItem+ContextMenu в MVMM
|
|||
|---|---|---|---|
|
#18+
Sky DragonА команда лежит во ViewModel.Что мешает положить команду во вьюмодель элемента дерева? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2012, 08:40 |
|
||
|
TreeViewItem+ContextMenu в MVMM
|
|||
|---|---|---|---|
|
#18+
Алексей К, То, что команда используется не только в контекстном меню дерева. Есть типа тулбара с теми же командами, который находится вне дерева. в кратце: Код: c# 1. 2. 3. 4. 5. То есть на форму в DataContext кидается ViewModel. На форме находится TreeView, в ItemsSource которого биндится _дерево. Команды вешаются на кнопочки в форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2012, 09:05 |
|
||
|
|

start [/forum/topic.php?fid=21&msg=37672360&tid=1441920]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
67ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 169ms |
| total: | 294ms |

| 0 / 0 |
