1
public
static
class
ChildWindowExtensions
2
{
3
4
public
static
void
SetStartLocation(
this
ChildWindow childWindow,
double
x,
double
y)
5
{
6
7
var template
=
VisualTreeHelper.GetChild(childWindow,
0
)
as
FrameworkElement;
8
9
var contentRoot
=
template.FindName(
"
ContentRoot
"
)
as
FrameworkElement;
10
11
var group
=
contentRoot.RenderTransform
as
TransformGroup;
12
13
TranslateTransform translateTransform
=
null
;
14
15
foreach
(var transform
in
group.Children.OfType
<
TranslateTransform
>
())
16
{
17
18
translateTransform
=
transform;
19
20
}
21
22
//
設置初始位置
23
24
translateTransform.X
=
x;
25
26
translateTransform.Y
=
y;
27
28
}
29
30
31
32
33
34
}
ch
=
new
ChildWindow1();
ch.SetStartLocation(
100
,
100
);
ch.Show();
1
private
void
button1_Click(
object
sender, RoutedEventArgs e)
2
{
3
ch
=
new
ChildWindow1();
4
ch.Show();
5
ch.Loaded
+=
new
RoutedEventHandler(ch_Loaded);
6
7
8
}
9
10
void
ch_Loaded(
object
sender, RoutedEventArgs e)
11
{
12
ch.SetStartLocation(
100
,
100
);
13
}
14
這樣,當你再點擊Button的時候,子窗體將會在你設定的位置彈出,而不是在中心彈出。:)