For previous versions of Windows Phone, if you had a scrollable control within a ScrollView, then you could set UseOptimizedManipulationRouting to false so that the inner control got a chance to handle the manipulation events first. This does not seem to exist on Windows Phone for WinRT. Does anyone know what the correct solution would be in this case?
IIRC, you need to set ManipulationMode to something like ManipulationMode="System,TranslateX" (i.e. include the System flag with your other modes that you want enabled), then call CancelDirectManipulations() when you want to prevent the system from continuing the processing of direct manipulations on the ScrollViewer.
Here's a sample that uses the CancelDirectManipulations() method.
Related
good day,
I have made the scrollbar visible on my panel, but for the life of me I do not know how to capture the scroll events. How is this done? im using versio 2.8.
Even with wxScrolledWindow the scrollbar is visible but how does one get the event and then process it?
I have tried using connect() and no luck.
Pleas point me to an example.
Thanks
Several points:
Using wxScrolledWindow is different from using the individual, standalone, wxScrollBar controls. To capture events for the former, you use wxEVT_SCROLLWIN_XXX events and the corresponding event macros, while for the latter you use wxEVT_SCROLL_XXX.
Typically you should be using wxScrolledWindow which takes care of scrolling automatically, i.e. you rarely need to catch any events, are you sure you really need to do this?
Look at the scroll sample for many examples of using different scrolled windows if you hadn't already.
Do yourself a favour and switch to a supported 3.0 version instead of a decade old 2.8, there is really no reason to start a new project using 2.8 nowadays.
I would like to have a ComboBox that handles large amounts of content by loading them asynchronously inside a Loader, so I can display a little BusyIndicator over the drop-down.
Is it maybe possible to achieve this through a style? I want to avoid having to recreate a ComboBox from scratch.
No. It may be possible in the future, though:
This one is a bit tricky to get right, and is still work in progress. It is not difficult to style the popup background, the same way it's currently doable for MenuStyle. What remains, as you pointed out, is to make that API public.
What we can't promise, is to be able to style the popup window shape. If QtQuick was backing store based, then most platforms support shaping the window. But QtQuick is OpenGL based, and desktop platforms support this in different ways. On mobile and embedded platforms, we can't use a separate window, so we need to build an abstraction that would use Item-based popups.
I'd suggest voting for and watching QTBUG-39476 if you're interested in this feature and don't want to write your own ComboBox.
I am trying to load bulk images and trying to put them as a slideshow and it's working fine.
Now I would like to have some effects like flip out,ease out effect and fade effect on those images when changing them without using any user control as I would like to do with the existing picturebox.Is it possible to do so?
If so can anyone point me to some resources.
As I have done googling and found some useful links and I am placing here that might helpful to someone.And all these have use seperate usercontrols to do, and I am not looking into that.
http://code.google.com/p/dot-net-transitions/
http://www.codeproject.com/KB/cpp/fluid_effect.aspx
The built-in picture box has no such capability. Your solution will require custom-drawing regardless what control you use (assuming you don't get a 3rd party product).
I'm working on a project that will use a Surface table to show web browsers that can be manipulated via the multitouch behaviors. I'd like to be able to show a browser at full screen and then resize, move, etc.
I'd also like to be able to launch a new, separate browser windows that can also be manipulated through multitouch.
Any suggestions on controls to look into for this?
Thanks!
This is a non-trivial task. As far as I know, many have tried and put months of effort into it but none of been very successful. Don't even bother trying to get something to work well based on WPF's built in WebBrowser control. Best bet is to start with the SurfaceScatterView control and trying to put a 'Chromium' control inside of it (http://wpfchromium.codeplex.com/). It appears that even this isn't straightforward though: http://wpfchromium.codeplex.com/discussions/244117
If I place a WebBrowser control on any page, the page no longer responds to manipulation events under the WebBrowser. Other areas of the page work fine.
It's easily confirmed by overriding OnManipulationCompleted in a page, then placing a WebBrowser control on the page. Try swiping over the WebBrowser, and OnManipulationCompleted is never called.
I can't set the WebBrowser to IsHitTestVisible=false because I need to be able to click on links. But I want the page to respond to left/right swipes.
Anyone got any bright ideas? Or know if this is a bug in the current release?
I'd like to extend what Skeet already written.
The point is, that the MS WP7 dev team has published "guidelines", where they highly discourage putting (on the same page) multiple layout controls that accept and react to the same set of gestures. For example, you shouldn't try to embed a Pivot inside a Pano, because the horizontal-swipe will clash and it will be hard do distinguish which of them should execute its actions. The same case is with the browser: it responds to all swipes and pans.. so should not be put in almost any scrolling control!!
Now, having said that, I want to tell you it is possible to overcame it - although it may turn not easy, depending on your actual case.
The most trivial thing to do, if you want to still be notified about the gestures is to use GestureService/GestureListener from the Silverlight Toolkit library. Even when the WebBrowser extinguishes the raw manipulations events, the GestureListener will still be able to notify you - because it apparently listens on some "other layer", I don't exactly want to get in to it now. Just fetch the library, add-reference it, do something like:
GestureService.GetListener( targetcontrol ).Flick( myBrowserFlickHandler );
and it's done - you get the notification whenever someone flicks on the control, with completely no regard of the manipulation events being e.handled=true or not. Small disclaimer here: I don't remember if on 7.0 it works, because the WebBrowser is build a bit differenlty there. On 7.1 and 7.5 it should work.
However, if you apply that on a WebBrowser - you will get the notif - but the webbrowser will get it too. That means, that 2 controls will react, and it turn to be visually quite rejecting if you start some storyboards from within the handler..
On 7.1 and almost-current 7.5, it is possible to play hard with the WebBrowser and to completely control which manipulation-event it will see. Thus, by filtering the mani-events for the WB, and by using GestureListener to see the events yourself, you can both block the WB from doing anything, and at the same time you can respond with your own action instead. I've written about that extensively in a response to similar problem, see WP7 Pivot control and a WebBrowser control for details. It is not a quick/easy/funny thing to do though.
EDIT: and MOST importantly, it is NOT guaranteed to work in the future. Throughout the 7.1 and 7.5 SDK/OS/API versions, inside the WebBrowser control some major internal undergoing changes are visible, and I would not be surprised, if it would dramatically change in the next few releases. Don't play with the things I've wrote there about if you do not want to have to revisit the subject again in the next 1-2 years.
This is a consequence of the way we implemented WebBrowser. The touch events are handed off directly to the browser engine. Once that happens Silverlight is basically out of the picture. Unfortunately I can't think of any workarounds that might give you what you want. -Skeets, MS dev
If you really want it:
<Grid>
<phone:WebBrowser Source="http://www.microsoft.com" />
<Rectangle Fill="Transparent" ManipulationCompleted="HandleManipulationCompleted"/>
</Grid>
But of course it completely locks down interaction with web browser control and there's just no way to echo manipulation events to browser...
I think you have a better way capturing the manipulation events, if it is in WP7.5 Mango since the browser controls are completely different, which I read from this link