Контекстное меню WPF не связывает со связанным с данными объектом права

Эта ссылка имеет лучший ответ http://forums.asp.net/t/1610039.aspx?How+to+calculate+difference+between+two+dates+in+years

Вам нужно только добавить валидацию для дней, somthing like:

if (firstDate.getDate () & lt; = now.getDate ())

17
задан 19 March 2009 в 13:20
поделиться

2 ответа

Ключевая вещь помнить вот , контекстные меню не являются частью визуального дерева.

Поэтому они не наследовали тот же источник как управление, которому они принадлежат для привязки. Способ иметь дело с этим состоит в том, чтобы связать с целью размещения самого ContextMenu.

<MenuItem Header="Change" Command="{Binding 
    Path=PlacementTarget.ChangeCommand, 
    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}}"
/>
22
ответ дан 30 November 2019 в 11:38
поделиться

Самый чистый способ привязать команды к контекстным пунктам меню включают использование класса, называемого commandReference. Вы можете найти его в MVVM Toolkit на CodePlex в FPF Futures .

XAML может выглядеть так:

<UserControl x:Class="View.MyView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:vm="clr-namespace:ViewModel;assembly=MyViewModel"
                xmlns:mvvm="clr-namespace:ViewModelHelper;assembly=ViewModelHelper"
           <UserControl.Resources>
                <mvvm:CommandReference x:Key="MyCustomCommandReference" Command="{Binding MyCustomCommand}" />

                <ContextMenu x:Key="ItemContextMenu">
                    <MenuItem Header="Plate">
                        <MenuItem Header="Inspect Now" Command="{StaticResource MyCustomCommandReference}"
                                CommandParameter="{Binding}">
                        </MenuItem>
                    </MenuItem>
               </ContextMenu>
    </UserControl.Resources>

MyCustomCommand - релаомманд на ViewModel. В этом примере ViewModel был прикреплен к DataContext представления в кодовом режиме.

Примечание. Этот XAML был скопирован из рабочего проекта и упрощенного для иллюстрации. Могут быть опечатки или другие незначительные ошибки.

8
ответ дан 30 November 2019 в 11:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: