Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 935121
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T21:06:29+00:00 2026-05-15T21:06:29+00:00

I have a Custom Canvas(DesignerCanvas), user can add some controls to this canvas. Before

  • 0

I have a Custom Canvas(DesignerCanvas), user can add some controls to this canvas. Before adding any control canvas first wraps it insdie a custom control(Designer Item) and then add that control to canvas.

This is done as in this codeproject article –

WPF Diagram Designer –
http://www.codeproject.com/KB/WPF/WPFDiagramDesigner_Part4.aspx

I have added context menus for both DesignerCanvas and DesignerItem having a menu item named ‘Lock’. I have also added a property in canvas named “IsLocked” to lock the canvas.

Now, in the context menu I want to show a check mark if canvas is locked, to do this I have bound the IsLocked property to ‘IsChecked’ property of MenuItem. Problem is that it works for the DesignerCanvas cantext menu but not for DesignerItems context menu.

DesignerCanvas ContextMenu code, this works fine –

<!-- Context menu for DesignerCanvas -->
<ContextMenu x:Key="DesignerCanvasContextMenu">
  <!-- Other menu items -->
  <MenuItem IsCheckable="True" Header="Lock"
    IsChecked="{Binding Path=IsLocked, Mode=TwoWay,
     RelativeSource={RelativeSource AncestorType={x:Type locl:DesignerCanvas}}}"
    Command="{x:Static local:DesignerCanvas.LockUnLock}"
    CommandParameter="{Binding RelativeSource={RelativeSource Self}, 
     Path=IsChecked}"
    CommandTarget="{Binding Path=PlacementTarget,
     RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}">
  </MenuItem>
</ContextMenu>

Need to do achive same behavior for DesignerItem menu too. I tried doing this but it doesn’t work –

<!-- Context menu for DesignerItem -->
<ContextMenu x:Key="DesignerItemContextMenu">
  <!-- Other menu items -->
  <MenuItem IsCheckable="True" Header="Lock"
    IsChecked="{Binding Path=Parent.IsLocked, Mode=TwoWay,
      RelativeSource={RelativeSource AncestorType={x:Type locl:DesignerItem}}}"
    Command="{x:Static local:DesignerCanvas.LockUnLock}"
    CommandParameter="{Binding RelativeSource={RelativeSource Self}, 
     Path=IsChecked}"
    CommandTarget="{Binding Path=PlacementTarget,
     RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}">
  </MenuItem>
</ContextMenu>

I tried to do this using PlacementTarget too but was not successful. As DesignerItem is DesignerCanvas’s child it should not be impossible to get hold of the DesignerCanvas and in turn its property. What am I doing wrong, any idea?

Update:

I am attaching the context menu with DesignerCanvas and Designer Item like this –

<!-- DesignerItem || Style -->
<Style TargetType="{x:Type locl:DesignerItem}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type local:DesignerItem}">
        <Grid x:Name="PART_Grid" Cursor="SizeAll"
          DataContext="{Binding RelativeSource={RelativeSource TemplatedParent} 
,Path=.}"
          ContextMenu="{StaticResource DesignerItemContextMenu}">

          <!-- other template parts -->

        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>


<!-- DesignerCanvas || Style -->
<Style
    TargetType="{x:Type locl:DesignerCanvas}">
    <Setter
        Property="ContextMenu"
        Value="{StaticResource DesignerCanvasContextMenu}" />
</Style>
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T21:06:30+00:00Added an answer on May 15, 2026 at 9:06 pm

    just a quick guess:

    have you tried setting your Contextmenu on DesignerItem the same Way as for the Canvas? like so:

    <Style TargetType="{x:Type locl:DesignerItem}">
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type local:DesignerItem}">
            <Grid x:Name="PART_Grid" Cursor="SizeAll"
              DataContext="{Binding RelativeSource={RelativeSource TemplatedParent} 
    ,Path=.}">
    
              <!-- other template parts -->
    
            </Grid>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
      <Setter
        Property="ContextMenu"
        Value="{StaticResource DesignerItemContextMenu}" />
    </Style>
    

    other than that, I really recommend you fire up Snoop on your application and look for binding errors in your context menu

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a custom validation function in JavaScript in a user control on a
I have a custom control that implements IPostBackEventHandler. Some client-side events invoke __doPostBack(controlID, eventArgs).
Can you have custom client-side javascript Validation for standard ASP.NET Web Form Validators? For
hi i would like to create a custom calendar, this calendar will have custom
I have custom coded several enterprise applications for mid to large organizations to use
I have custom errors configured in my web.config, but IIS 6.0 is returning the
I have a few models that need to have custom find conditions placed on
I have a custom built ajax [div] based dynamic dropdown. I have an [input]
I have a custom installer action that updates the PATH environment, and creates an
We have a custom-built Flash-based video player that I maintain, and it needs to

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.