我的窗口上有一个项目控件,双击时我想打开第二个窗口。我的问题是,如果项目控件包含在滚动查看器中,则新窗口会出现在主窗口后面而不是前面。如果在此代码中注释掉滚动查看器,则窗口将按预期打开。
这是怎么回事?
Window XAML:
<Window x:Class="EktronDataUI.TestWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TestWindow" Height="300" Width="300">
<Grid>
<ScrollViewer>
<ItemsControl ItemsSource="{Binding Source={StaticResource odpMockSmartForms}}" MouseDoubleClick="ItemsControl_MouseDoubleClick" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="Double Click Me" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
</Window>
代码背后:
private void ItemsControl_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
TestWindow window = new TestWindow();
window.Show();
}
答案 0 :(得分:2)
您是否尝试告诉MouseButtonEventArgs您已经处理过它?当您在其中双击时,ScrollViewer很可能会尝试聚焦或执行其他操作,导致窗口在打开其他窗口后再次变为活动状态。
private void ItemsControl_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
e.handled = true;
TestWindow window = new TestWindow();
window.Show();
}
答案 1 :(得分:0)
不确定...但是如果您删除了滚动查看器,问题是否会得到修复,而是使用:
<ItemsControl ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
答案 2 :(得分:-1)
如果我将TopMost设置为true,我会拉入您的代码并将其拉到前面。
private void ItemsControl_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
TestWindow window = new TestWindow();
window.Show();
window.Topmost = true;
}
这是你要找的吗?