/ / Pokazuje okno wyśrodkowane - .net, wpf, xaml, siatka, centrowanie

Wyświetlanie okna wyśrodkowanego - .net, wpf, xaml, grid, centrowanie

Muszę pokazać Window wyśrodkowany w drugiej kolumnie mojego Grid. Ponieważ jest to WindowNie mogę dodać go bezpośrednio do siatki za pośrednictwem XAML.Czy mogę programowo znaleźć środek drugiej kolumny mojej siatki, tak że przesuę tam moje okno, zanim je pokażę?

Moje drugie okno to po prostu fantazyjne małe okienko z wiadomościami. Wcześniej próbowałem przekonwertować go na UserControl zamiast Window, tak żebym mógł umieścić go bezpośrednio w drugiej kolumnie Grida, ale nie mogę tego zrobić ShowDialog() na tym. Muszę poczekać, aż użytkownik kliknie OK, zanim przejdzie dalej.

Odpowiedzi:

1 dla odpowiedzi № 1

Dla każdego, kto szuka odpowiedzi, oto co otrzymałem:

private void CenterWindowInRightPane(Window window, UIElement rightPane)
{
Point loc = rightPane.TransformToAncestor(this).Transform(new Point(0, 0));
w.Left = (this.Left + loc.X) + (rightPane.ActualWidth - w.ActualWidth) / 2;
w.Top = (this.Top + loc.Y) + (rightPane.ActualHeight - w.ActualHeight) / 2;
}

0 dla odpowiedzi nr 2

Myślę, że interfejs MDI pasuje do twojego przypadku: http://wpfmdi.codeplex.com


0 dla odpowiedzi № 3

Możesz użyć a Popup do którego ustawiłeś siatkę jako PlacementTarget i nastaw Placement=Center