I'm creating a Silverlight 4 Out Of Browser application. I have my MainPage that will be the "central" application. I want to be able to display another Control next to the MainPage, by using a Popup and I want it to be displayed right next to the MainPage.
How can I get the coordinates of the upper right corner of the MainPage at each moment? (Beware that this MainPage can be moved all over the screen and hence I will need to dynamically get the corner coordinates, in order to display my popup right next to the main window).
Any thoughts on this?
Thank you!!
PS: the code is in C# :-)
When you say "MainPage" are you meaning MainWindow really? Silverlight doesn't have multiple window support yet.
Assuming you do mean the actual mainpage control and you want the Top/Right corner position that would be Canvas.Top and Canvas.Left properties you could get. If you posted some more XAML it might help us answer on what you are trying to do.
Related
I have a simple task that I want to accomplish: Have a WPF window launch with a Horizontal Alignment that is stretched to the total width of the current screen. I want to achieve a kind of custom Overlay MessageBox (I dont want to use third party controls such as MahApps), I am not using any third party references for this.
Please see what I have achieved so far (Not sure if the image will show, the link is http://imgur.com/e27DyNJ):
I have tried setting the width with a Controller object that I wrote which works, that basically sets the Width, Height, Left and Top to the width of the primary monitor. Downside is the window then pops up on the primary screen, not on the screen that is currently in use.
As far as I know, WPF doesn't have any multi-screen functions. You could PInvoke some native Multiple Display Monitor Functions, wrap them in a managed class and utilize them in that regard, though.
As a workaround, I have done the following:
var screen = System.Windows.Forms.Screen.FromRectangle(new System.Drawing.Rectangle((int)window.Left, (int)window.Top, (int)window.Width, (int)window.Height));
window.Width = screen.WorkingArea.Width;
window.Left = screen.WorkingArea.Left;
where window is the instance of my window I want to resize.
This works with the current screen the window was opened on.
I'm creating my own DialogBox.
How can I make this DialogBox always appear to the top right corner of my MainWindow?
I mean the dialog box should move with the MainWindow like a conjoined twins.
Thx in advance.
You can use code from this answer to help you achieve your goal: How to set the location of a WPF window?
When you create a MyDialogBox, get the location of the current / main window and use that to help calculate where you should set the location of your MyDialogBox
I got a canvas which has many uiElements as its children.
When i get the xaml and paste it in Expression blend it displays it well.
Now when i select a path in blend and resize it by dragging the height of it grows successfully increasing the width and the rest of the coordinates are automatically calculated.
I need to give this kind of functionality to my users for the elements on my canvas.
Just wondering if any one has any suggestions or links which can help me.
Thanks
N
You want to look at the Adorner Framework of WPF. That article gives an overview and is a good place to get started.
Here is an Adorner sample that probably does what you want.
I am working through the above Tutorial from ScottGu located here (http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-6-using-user-controls-to-implement-master-detail-scenarios.aspx) and I am trying to figure how when the UserControl loads, the background page is 'grayed' out like that? Where is that code for that?
I am trying to extract that logic into my own Page / UserControl scenario and when I load the UC, the background is still fully 'visible'. Thanks for any advice!
Under the heading Building a Basic Modal Dialog Using a User Control, Scott's post describes:
"The first control above is configured to stretch to take up all of the available space on the screen. Its background fill color is a somewhat transparent gray (because its Opactity is .765 you can see a little of what is behind it). The second control will then be layered on top of this Rectangle control, and take up a fixed width on the screen."
The Rectangle "grays out" the contents of the screen.
I currently have a Silverlight canvas that exceeds the viewable area of the screen (I'm letting the users drag the viewable areas around to navigate). I'm trying to display a modal popup that always shows up in the middle of the viewable area, and I can't seem to find any property that tells me what currently is on the screen. Basically if the user has panned down to the bottom and clicks something that causes a modal popup to appear it is stuck at the far top of the screen.
Any ideas anyone?
Thanks
~Steve
I don't think this is possible since the visibility isn't being surfaced. Perhaps with some fun JavaScript to figure out where the panning is?
Quite true. I wound up creating a holding canvas, making that full screen, and putting everything else as a child canvas within that. The modal popup now comes up in the holding canvas.
Gabriel GuimarĂ£es one works good.
App.Current.Host.Content.ActualHeight(and ActualWidth) does bring the browser size inside. Good for calculating position. And of course you can use LayoutUpdated on your main control to double check the sizes and resize stuff if need be.