none
使用导航页回到上一页,为什么RoutedUICommand命令无法响应? RRS feed

  • 问题

  • 在第一页上面,有一个listbox,包括了一些border,增加了context menu给border。当右键点击border和选择菜单项后,视图切换到另一页。在另一页,再使用导航回到上一页,这时刚才选择的那个border还是选中,但是右键菜单中的那个菜单项是灰的,不可用。如果我切换一些border,就又可用了。这是什么原因,请帮忙,谢谢。

    下面是部分代码:
    <Page .....      x:Class="PartList" xmlns:Local="..."> //This is the page with border and menu.
    <Page.CommandBindings>
            <CommandBinding Command="{x:Static Local:PartList.SelectCurrentPart}" Executed="SelectCurrentPart_Executed" CanExecute="SelectCurrentPart_CanExecute" /> //This is a command for menu.
    </Page.CommandBindings>
    <Border x:Name="bord" ....> //This is border
    <Border.ContextMenu>
         <ContextMenu>
              <MenuItem Header="Apply" Visibility="Visible" Command="{x:Static Local:PartList.SelectCurrentPart}" VerticalAlignment="Center" FontWeight="UltraBold" /> //This is context menu for border.
         </ContextMenu>
    </Border.ContextMenu>
    </Border>

    public partial class PartList : Page, INotifyPropertyChanged
    {
        public static readonly RoutedUICommand SelectCurrentPart = new RoutedUICommand("Select Current Part", "SelectCurrentPart", typeof(PartList));
        private void SelectCurrentPart_Executed(object sender, ExecutedRoutedEventArgs e)
        {
           ..................
           this.NavigationService.Navigate(nextPage);
        }
    }
    2009年5月22日 6:16

全部回复

  • SelectCurrentPart_CanExecute的代码可以贴出来看看吗?如果有完整的代码就更好了,从你的描述里面,我还是不能得到足够的信息。
    2009年5月25日 7:14
  • private void SelectCurrentPart_CanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = true;
    }
    2009年5月25日 7:16
  • 是不是CommandTarget没有设置的问题?试一下将MenuItem的CommandTarget设置为Border或者Page。

     <ContextMenu>
              <MenuItem Header="Apply" Visibility="Visible" Command="{x:Static Local:PartList.SelectCurrentPart}" VerticalAlignment="Center" FontWeight="UltraBold" CommandTarget="..." /> //This is context menu for border.
         </ContextMenu>
    2009年5月25日 7:31
  • 使用:CommandTarget="{Binding ElementName=PageName}" 或者 CommandTarget="{Binding ElementName=BorderName}"
    都是没有效果。

    2009年5月25日 8:53