Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
HardRockLive
0 / 0 / 0
Регистрация: 17.01.2018
Сообщений: 2
1

WPF - Binding ContextMenu commands внутри DataTemplate

17.01.2018, 12:41. Просмотров 983. Ответов 1
Метки нет (Все метки)

Добрый день, пытаюсь создать TabControl с разными ContextMenu в зависимости от элемента вызова.
Например при клике на пустом месте в панеле табов - одно меню, а по клику на одной из табов другое, внутри контента третье и тд.

Код
<TabControl Grid.Column="4" ItemsSource="{Binding Path=TabsToDisplay}" SelectedItem="{Binding Path=SelectedTab}">
<TabControl.ContextMenu>
    <ContextMenu>
        <MenuItem Header="Create" Command="{Binding Path=CreateNewTabCommand}"/>
    </ContextMenu>
</TabControl.ContextMenu>
<TabControl.ItemTemplate>
    <DataTemplate>
        <TextBlock>
            <TextBlock Text="{Binding Name}"/>
            <TextBlock.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Create Tab" Command="{Binding Path=CreateNewTabCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>
                    <MenuItem Header="Delete Tab" Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext.DeleteTabCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Parent}"/>
                </ContextMenu>
            </TextBlock.ContextMenu>
        </TextBlock>
    </DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
    <HierarchicalDataTemplate>
        ...
    </HierarchicalDataTemplate>
</TabControl.ContentTemplate>
Первое ContextMenu в TabControl работает нормально, команды вызываются без проблем, а вот меню внутри шаблона для табов отображается но команды вообще не работают, никакой реакции, какие только комбинации биндинга я не пробовал, ничег оне помогает.

Команды находятся во ViewModel по стандарту MvvM

Помогите пожалуйста рабочим примером.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2018, 12:41
Ответы с готовыми решениями:

Binding в DataTemplate
Проблема в следующем. Допустим у меня есть XAML разметка: &lt;Window...

DataTemplate, Convert и Binding
Нужно сделать таблицу в SilverLight. Ничего пока ещё вообще не понимаю. Нужны подсказки. Постараюсь...

MVVM, Command, ContextMenu Binding
Доброго времени суток. Столкнулся с проблемой. Имеется внутри View &lt;ListBox.ItemTemplate&gt; ...

Передать внутри Binding в ConverterParameter ссылку на окно содержащее объект, который использует Binding
В главном окне в ресурсах есть Контекстные меню. У программы есть &quot;Ручной режим&quot;, если режим тру....

wpf contextmenu
Подскажите как добавить функционал изменения текста в contextmenu кнопки создал а вот как дальше не...

1
amarf
Жуткая тВарЬ
382 / 318 / 134
Регистрация: 06.02.2015
Сообщений: 960
Записей в блоге: 1
Завершенные тесты: 3
17.01.2018, 13:54 2
Лучший ответ Сообщение было отмечено HardRockLive как решение

Решение

Создаешь ресурс:
XML
1
2
3
<TabControl.Resources>
    <local:BindingProxy Data="{Binding .}" x:Key="Proxy"/>
</TabControl.Resources>
В шаблона делаешь байдинг к этому ресурсу.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System.Windows;
 
    public class BindingProxy : Freezable
    {
        static BindingProxy()
        {
            DataProperty = DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));
        }
 
        protected override Freezable CreateInstanceCore()
        {
            return new BindingProxy();
        }
 
        public static readonly DependencyProperty DataProperty;
        public object Data
        {
            get { return (object)GetValue(DataProperty); }
            set { SetValue(DataProperty, value); }
        }
    }
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2018, 13:54

WPF не отображается картинка в DataTemplate
Добрый вечер. Есть шаблон для ListBox: &lt;DataTemplate DataType=&quot;{x:Type model:Waiter}&quot; &gt; ...

WPF Toolkit MVVM contextmenu header column
Подскажите пожалуйста, нужно сделать контекстное меню для выбора столбцов, которые будут...

Доступ к StaticResource внутри DataTemplate
Есть шаблон &lt;DataTemplate DataType=&quot;{x:Type staticRes:MyViewModel}&quot;&gt; &lt;Grid&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.