Do not scale ScrollViewer children, that are inside Canvas - xaml

I have a ScrollViewer which has a Canvas inside it. To make this construction support panning, I'm setting MinZoomFactor and MaxZoomFactor to 4.
Is it possible to NOT apply scale on elements that are added later at runtime to the canvas? How can I achieve it? LayoutTransform is not available in WinRT, and I didn't manage to apply RenderTransform.Inverse to canvas child elements to compensate scale.
Thanks.

No, there's no way to allow the ScrollViewer to scroll / zoom some of its contents but not others. If you don't want the Canvas to scroll / zoom at all then you can place it on top of rather than in the ScrollViewer.
If you want to allow it to scroll but not to zoom then you can try applying an inverse ScaleTransform to it by setting the ScaleX and ScaleY values to 1 / ScrollViewer.ZoomFactor .

Related

NSFullSizeContentViewWindowMask and title/toolbar height?

I am attempting to implement something similar to Safari where the window's style mask is set to NSFullSizeContentViewWindowMask so the NSToolBar and title bar blur the background view.
This works fine, however I have a view that I need to not be clipped by the toolbar/titlebar, similar to how Safari's WebView has an initial top padding that doesn't cover the content when the view is unschooled.
My attempted solution was to create a dummy NSView which the unclipped views align their top value to, then changing the height constant of the dummy view to the height of the titlebar/toolbar. The issue, however, is that there seems to be no way to calculate the height of the toolbar.
This suggests that I calculate the height by subtracting the height of the contentView from the height of the window, but that only works (returns 0 otherwise as the two heights are equal) if I don't use NSFullSizeContentViewWindowMask which I want to use for the blurring effect.
Am I overlooking something simple, or is there no simple way to accomplish this?
Check NSWindow's contentLayoutRect property.

How to apply UI virtualization to ScrollViewer in WinRT

Is it possible to apply UI virtualization to ScrollViewer in WinRT. In my application I am creating a line chart with the help of Polyline(Polyline embedded inside a scrollviewver). But in the current case, If it come more than 500 points. It blocks the UI during the time of interacting with the Map. So what I am trying to achieve is to apply kind of UI virtualization to scroll view. If anyone had any idea to solve this please help me.
The way I would handle a Polyline is I would break its data into sections, perhaps screen-wide ones (assuming horizontal-only scrolling), put a Canvas inside of the ScrollViewer, make the size (Width) of the Canvas the total size of the chart and put a few (say 5) Polyline controls in it and then on the ViewChanged event update the Polyline controls' Canvas.Left and Points properties to correspond to the area around the current view port of the ScrollViewer. That should give you smooth scrolling. Just don't add/remove or update the controls on each ViewChanged and only update Canvas.Left and Points when you need to - that is when you don't have a Polyline ready to display next to the current view port.

Disabling scrolling when image is zoomed

I have an image inside a UIScrollView. What I want to happen is if I zoomed in to a particular position, I want to disable the scrolling (both vertical and horizontal) so that it will remain on the zoomed area. Can you give me any ideas on how to do this?
Two things to keep in mind:
Make sure you are exactly where you want when you need to disable the scroll. (you can use some methods from the UIScrollViewDelegate to accomplish that).
Make the contentSize of your UIScrollView the same size of your frame. This way both the horizontal and the vertical scroll will be disable.
CGRect myScrollViewRect = myScrollView.frame;
CGSize myScrollViewFrameSize = CGSizeMake(myScrollViewRect.frame.size.width, myScrollViewRect.frame.size.height);
myScrollView.contentSize = myScrollViewFrameSize;
For clarity I putted more code than you would normally need to.

GTK: Resizing widgets contained in a textview

I have a Gtk.TextView control, and I'm inserting child widgets into it. I'd like to be able to have the children resize to fit the width of the TextView when the form is resized. Is there a built-in way to do this? If not, can anyone suggest a good way of writing my own?
You can use the gtk_text_view_get_window() method to get the width of the Gtk.TextView. With this number you can resize your child-widget accordingly. If you want to resize the child-widget automatically when the Gtk.TextView resizes, you can use the signal check-resize, to do the resizing.

Scale a canvas inside a templated usercontrol

I created a templated usercontrol from a button in order to use common states etc. What I dont get is how to scale a canvas inside the template. I created a little drawing with lines but they do not scale/transform with the control when I use it.
Most interesting would be if that is possible using xaml element binding (I am playing with SL3).
Regards Mario
I would use a Grid and set it's Height and Width to Auto. If yo addi items to the rows and columns and they are all set to stretch the stuff nside the grid will automatically resize. Not sure if that is what you are asking but that is what comes off the top of my head.