Search code examples
c#windows-phone-8bindingwindows-phone-8.1datacontext

Can't access datacontext of parent


Basically what i have is a ListBox with ContextMenu

 <ListBox  Margin="2,0,0,0"  Grid.Row="1" ItemsSource="{Binding MyCollection}">
        <ListBox.ItemTemplate>
                <DataTemplate>
                    <Button  Style="{StaticResource NoVisualButton }" Tag="{Binding ID}" Width="430" toolkit:TiltEffect.IsTiltEnabled="True"  Margin="0,0,0,12" Click="OnSelectWorkOutItemClick">
                        <StackPanel>
                            <toolkit:ContextMenuService.ContextMenu>
                                <toolkit:ContextMenu>
                                    <toolkit:MenuItem Header="delete" Tag="{Binding ID}" Click="onContextMenuDeleteItemClick" IsEnabled="{Binding IsDeleteOptionEnable, ElementName=LayoutRoot}"/>
                                    <toolkit:MenuItem Header="edit"  Tag="{Binding ID}" Click="onContextMenuItemEditClick" />
                                </toolkit:ContextMenu>
                            </toolkit:ContextMenuService.ContextMenu>
                            ...
                        </StackPanel>
                    </Button>
                </DataTemplate>
       </ListBox.ItemTemplate>
 </ListBox>

So if MyCollection has only one item, i have to disable delete MenuItem.

My model has a property

   public bool IsDeleteOptionEnable
       {             
           get
           {
               return MyCollection.Count() >= 2;
           }
       }

In the page i am setting the DataContext like:

   protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (IsDataLoaded)
            {
                this.DataContext =MyModel;
            }           
        }

The listbox is getting populated, but i can't disable "delete" MenuItem. What am i doing wrong?


Solution

  • Try

      IsEnabled="{Binding DataContext.IsDeleteOptionEnable, ElementName=LayoutRoot}"