多くのコードがあります。しかし、問題があります: 私はDataTemplateのようコントロールとリストボックスを持っている:WPFメインウィンドウは常に他のウィンドウの上にあります
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ウィンドウが開くが、ちょうど私のメインウィンドウの下にされています
<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>
とすると、イベントの背後にあるコードをクリックしてください。 wndw.Activate()、wndw.Focus()は役に立ちません。 私はこれをやろうとしました。この後、IsEnabled = falseとwndw.Show()。その後、私のConcertViewはMainWindowの上にありました。しかし、このように.IsEnabledが真実になると、ConcertViewは突然下に行きます。
その他のアイデアはありますか?
'wndw.TopMost = true;'を試しましたか? – ViVi
@ vishakh369はい私は試しました。もちろん、私のwndwはすべてのウィンドウの上になります。しかし、TopMostは、私のウィンドウがすべてのアプリケーション上にあるようにします。しかし、私はMainWindowの上に現れるように私のConcertVIewが必要です。私はまた、wndw.TopMost = trueとwndw.TopMost = false Thread.Sleep(x)の後に(睡眠はちょうどそれが正常に動作するかどうかを確認するためです) - 私のwndwはMainWindowの下に得た後に得た – utkillr
私は私の返信を投稿していますそれはあまりにも長く、コードを含んでいるからです。とにかく私はそれがうまくいくと思う。 – ViVi