Search code examples
c#contextmenuwindows-phone-7.1toolkit

disable MenuItem in windows phone toolkit


I want to disable some menuItems in a contextMenu, but not all of them.

 <tk:ContextMenuService.ContextMenu>
                            <tk:ContextMenu Name="optionMenu">

                                <tk:MenuItem Header="Move to Favorite" Name="moveToFav" Click="moveToFav_Click" />
                                <tk:MenuItem Header="Copy to Favorite" Name="copyToFav" Click="copyToFav_Click" />
                                <tk:MenuItem Header="Set as Folder Front" Name="setFront" Click="setFront_Click" />
                                <tk:MenuItem Header="Delete" Name="delete" Click="delete_Click" />
                            </tk:ContextMenu>
                        </tk:ContextMenuService.ContextMenu>

for example, I want to disable moveToFav, copyToFav MenuItem, I try to

moveToFav.isEnabled = false; copyToFav.isEnable = false;

But It didn't work because the compiler said moveToFav doesn't exist in the current context.

Any Help?


Solution

  • well, I decided to do the following

    <tk:ContextMenuService.ContextMenu>
                                <tk:ContextMenu x:Name="optionMenu" >
    
                                    <tk:MenuItem Header="Move to Favorite" x:Name="moveToFav" Click="moveToFav_Click" Loaded="moveToFav_Loaded" />
                                    <tk:MenuItem Header="Copy to Favorite" Name="copyToFav" Click="copyToFav_Click" Loaded="copyToFav_Loaded" />
                                    <tk:MenuItem Header="Set as Folder Front" Name="setFront" Click="setFront_Click" Loaded="setFront_Loaded" />
                                    <tk:MenuItem Header="Delete" Name="delete" Click="delete_Click" />
                                </tk:ContextMenu>
                            </tk:ContextMenuService.ContextMenu>
    

    in the code:

    private void moveToFav_Loaded(object sender, RoutedEventArgs e)
        {
            if (condition)
                (sender as MenuItem).IsEnabled = false;
        }
    
        private void copyToFav_Loaded(object sender, RoutedEventArgs e)
        {
            if (condition)
                (sender as MenuItem).IsEnabled = false;
        }
    

    it's not perfect, but it works