首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Combobox Dropdown事件触发父窗口Z索引更改

Combobox Dropdown事件触发父窗口Z索引更改
EN

Stack Overflow用户
提问于 2013-08-15 21:39:35
回答 1查看 609关注 0票数 0

我有一个WPF业务线应用程序原型的问题,我不知道从哪里开始调试。

我的主窗口(A)使用Dialog.Show()打开一个“对话”窗口。子窗口(B)上有一个组合框。

当单击组合框(展开并显示所有选项)时,除了组合框中显示的下拉列表之外,整个第二个窗口(B)都将隐藏。组合框不在那里,窗口也不在那里。除了下拉列表和它后面的主窗口之外,什么都没有。如果我单击主窗口,那么焦点再次被设置到窗口B,并且它显示了它应该显示的(因为我将窗口B的所有者设置为窗口A)。

更有趣的是,这个bug并不一致。它可能在我使用应用程序的20次中出现了1次,当它开始出现时,它可以连续出现几次,然后停止再次出现。

可能与此相关的是,我认为我在MessageBoxes中有时也会遇到同样的错误。在视图模型中使用MessageBox.Show() (Win forms msgbox)时,如果只显示主窗口(A),则该框有时会出现在主窗口后面,使用户看不到它。

我的应用程序使用的是GalaSoft MvvmLight (如果与之相关的话)和相当多的telerik组件。除此之外,我不确定要提供什么数据。我认为没有人能根据这些信息告诉我问题的根源,但是你会从哪里开始寻找问题呢?

更新:好消息!我已经隔离了问题,并找到了现象发生的先决条件组合: a)显示PDF文件的组件当前在应用程序的任何位置打开。b) telerik组件已取消对接和重新对接。

我将包含下面的代码,但我认为这个问题深埋在RadDocking或WebBrowser组件中。

MainWindow

代码语言:javascript
复制
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void OpenWindowClick(object sender, RoutedEventArgs e)
    {
        var w = new TestWindow { Owner = this, DataContext = new TestViewModel()};
        w.Show();
    }
}

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:telerikDocking="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Docking" 
    x:Class="TelerikGridDockingVsBrowserVsWindowBug.MainWindow"
    Title="MainWindow" Height="750" Width="925">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="200"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <telerikDocking:RadDocking Grid.Row="0">
        <telerikDocking:RadSplitContainer>
            <telerikDocking:RadPaneGroup>
                <telerikDocking:RadPane Header="I make bugs combined with a webbrowser showing a pdf document">
                    <TextBlock Text="1. Drag me and dock on the same or another location"/>
                </telerikDocking:RadPane>
            </telerikDocking:RadPaneGroup>
        </telerikDocking:RadSplitContainer>
    </telerikDocking:RadDocking>

    <Button Grid.Row="1" Click="OpenWindowClick" Content="2. Open window" Height="50" Margin="0,20"/>

    <WebBrowser Grid.Row="2" Source="http://www.kb.nl/sites/default/files/docs/pdf_guidelines.pdf"/>
</Grid>

TestWindow:

代码语言:javascript
复制
public partial class TestWindow : Window
{
    public TestWindow()
    {
        InitializeComponent();
    }
}

<Window x:Class="TelerikGridDockingVsBrowserVsWindowBug.TestWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="TestWindow" Height="150" Width="300">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <TextBlock> 3. Click on the combobox.</TextBlock>
    <ComboBox Grid.Row="1" ItemsSource="{Binding Options}" SelectedItem="{Binding SelectedOption}" Height="50"></ComboBox>
    <TextBlock Grid.Row="2"> This window will then disappear behind its owner</TextBlock>
</Grid>

TestWindow ViewModel:

代码语言:javascript
复制
public class TestViewModel
{
    public List<string> Options { get; set; }
    public string SelectedOption { get; set; }

    public TestViewModel()
    {
        Options = new List<string> { "String1", "String2" };
        SelectedOption = Options.First();
    }
}

我和Telerik有一张关于这方面的开放罚单,所以如果我发现了什么,我会在这里更新。

EN

回答 1

Stack Overflow用户

发布于 2013-08-15 22:16:33

我以前也遇到过你的情况...你有一个无法解释的问题。这没有任何意义。你已经试过你能想到的一切了.在解决这个问题的最后努力中,你把它抛给这里所有有经验的用户……然后什么都没有..。无响应...没有帮助。

问题是,如果你不能在你面前的所有代码中找到并修复问题,那么我们如何在没有任何代码的情况下修复它?

我所能做的就是让你试着找出问题的确切来源。您可以通过注释掉部分代码,然后运行您的解决方案来查看这是否已经消除了问题,或者它是否仍然存在。你的问题很少发生,这会使这个阶段变得更加棘手。

然而,有了毅力,你应该能够缩小出现问题的范围。一旦您设法排除了足够多的代码,最后一步就是看看您是否在一个小得多的新WPF项目中重新创建了它。如果你能做到这一步,请回来展示你的精简代码……那么,我们也许可以进一步帮助您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18253926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档