|
We have a scene designer in our app that allows the user to add elements and resize, rotate, and position them.
When the user tries to resize to make the adorned element shorter, the adorner reaches a certain size and stops getting smaller (both vertically and/or horizontally), but the adorned element continues to get smaller.
I've looked and looked, but can't find anything that resembles a minimum height or width property.
There's a LOT of code associated with this problem (the adorner class is 525 lines all by itself, and then there's the xaml for the thumbs), so I'm not real fond of the idea of posting ALL of the code at once unless it's absolutely necessary.
Can anyone provide guidance?
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997
|
|
|
|
|
There is a MinHeight and MinWidth, but it should be undefined by default. This is one of those "look around at random sh*t until you stumble across the issue" type problems . I'd start at figuring out what size the adorner stops working at. Is it the same for height and width? Is it some arbitrary number like 47.488484 or is it something system metric-y like 32? Once you have figured out the height and width that the adorner stops shrinking at, I'd rack your brain and look through the code to try to figure out where those numbers are coming from. I'd also put diagnostic messages in all the adorner layout calculation functions to see what sizes & points are coming in and what size & points you are returning and what you are doing with your visuals. Also check that the mouse messages are being processed as expected.
|
|
|
|
|
Actually, it's got something to do with RenderSize on the adorned element. I thought I had it figured out today when I overrode OnRender , and set the render size in there, but when I do something else (like drag, resize, or rotate), the RenderSize goes back to its original value, but then immediately reverts to it's set size (because I set it in OnRender ). Furthermore, the rotation code STILL uses the (wrong) render size values to set the center of the rotate transform.
I hate WPF. If you think it would be worth it, I could post my adorner code (but like I said before, there's a LOT of it).
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997
|
|
|
|
|
You usually just override the MeasureOverride and the ArrangeOverride methods. Those two methods have to return the correct sizes and arrange everything properly for the adorners to work right.
|
|
|
|