Эта ссылка имеет лучший ответ http://forums.asp.net/t/1610039.aspx?How+to+calculate+difference+between+two+dates+in+years
Вам нужно только добавить валидацию для дней, somthing like:
if (firstDate.getDate () & lt; = now.getDate ())
Ключевая вещь помнить вот , контекстные меню не являются частью визуального дерева.
Поэтому они не наследовали тот же источник как управление, которому они принадлежат для привязки. Способ иметь дело с этим состоит в том, чтобы связать с целью размещения самого ContextMenu.
<MenuItem Header="Change" Command="{Binding
Path=PlacementTarget.ChangeCommand,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}}"
/>
Самый чистый способ привязать команды к контекстным пунктам меню включают использование класса, называемого 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 был скопирован из рабочего проекта и упрощенного для иллюстрации. Могут быть опечатки или другие незначительные ошибки.