WPF主窗口始终位于其他窗口之上

时间:2016-05-26 20:49:00

标签: c# wpf events window

有很多代码。但问题在于: 我有一个带有Control作为DataTemplate的Listbox:

<ListBox x:Name="UpcomingConcertsList" ItemsSource="{Binding UpcomingConcerts}" HorizontalAlignment="Left" Height="350" Margin="10,208,0,0" VerticalAlignment="Top" Width="370">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Control MouseDoubleClick="UpcomingConcert_DoubleClick">
                    <Control.Template>
                        <ControlTemplate>
                            <Border Margin="5" BorderThickness="1" BorderBrush="SteelBlue" CornerRadius="4" Width="320">
                                <Grid Margin="3">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="100"/>
                                        <ColumnDefinition/>
                                    </Grid.ColumnDefinitions>
                                    <Image Grid.RowSpan="2" Width="100" Height="75" Margin="6" Source="{Binding ImageURL}"/>
                                    <StackPanel Grid.Column="1" Margin="2,6">
                                        <TextBlock FontWeight="Bold" Text="{Binding Name}"/>
                                        <TextBlock Text="{Binding Date, StringFormat={}{0:g}}"/>
                                        <TextBlock Text="{Binding Bands, Converter={StaticResource BandsConverter}}"/>
                                    </StackPanel>
                                </Grid>
                            </Border>
                        </ControlTemplate>
                    </Control.Template>
                </Control>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

点击后面的事件代码:

private void Concert_DoubleClick(object sender, MouseButtonEventArgs e)
    {
        Control control = sender as Control;
        Concert concert = control.DataContext as Concert;

        ConcertView wndw = new ConcertView(concert.ConcertID);

        wndw.Show();
    }

ConcertView窗口打开,但在我的MainWindow下面。 wndw.Activate(),wndw.Focus()没有帮助。 我试着这样做.IsEnabled = false和wndw.Show()之后。然后我的ConcertView在MainWindow之上。但正如此.IsEnabled变为现实,ConcertView突然出现了。

是不是有想法?

1 个答案:

答案 0 :(得分:0)

但是TopMost使我的窗口覆盖了所有应用程序这是什么意思?您当前正在使用某个应用程序,当您单击某个按钮时,会加载一个新窗口。所以你希望新窗口本身就在最顶端吗?

您可以设置窗口的所有者属性以设置其所有者。即 MainWindow 。如果您设置,则当前窗口将为所有者窗口。

Window ownedWindow = new Window();
ownedWindow.Owner = this;
ownedWindow.Show();

现在尝试设置wndw.TopMost = true;并检查其是否正常工作。