簡體   English   中英

WPF主窗口始終位於其他窗口之上

[英]WPF Main Window is always above other windows

有很多代碼。 但是問題就在這里:我有一個控件為DataTemplate的列表框:

<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上方。 但是隨着this.IsEnabled變為現實,ConcertView突然崩潰了。

有其他想法嗎?

但是TopMost使我的窗口覆蓋所有應用程序,這是什么意思? 您當前正在使用應用程序,並且當您單擊按鈕時,將加載一個新窗口。 因此,您希望新窗口位於最上方嗎?

您可以設置窗口的Owner屬性以設置其所有者。 MainWindow 如果設置此選項,則當前窗口將是所有者窗口。

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

現在嘗試設置wndw.TopMost = true; 並檢查其是否正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM