Muszę pokazać Window
wyśrodkowany w drugiej kolumnie mojego Grid
. Ponieważ jest to Window
Nie 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 № 1Dla 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