Quote: 引用 楼主 dfgb45898 的回复:
private void border_MouseEnter(object sender, MouseEventArgs e)
{
    pop1.IsOpen = true;
}
修改一下:private void border_MouseEnter(object sender, MouseEventArgs e)
{
    pop1.IsOpen = false;
    pop1.IsOpen = true;
}

解决方案 »

  1.   

    因为你在其他地方点击之后,pop1并不是自动关闭了,而是跑到其他控件后面去了
    所以你再让它打开,它其实已经是打开的,而且已经在后面,所以看不到了.
    你先让它关闭,再打开,就又跑到前面来了.
      

  2.   

    如果你能断点调试的话,查看一下点击其他控件之后pop1.IsOpen的值,看我说的对不对
      

  3.   

    你说的不对哦。我在Window的MouseLeftButtonDown事件末尾设置断点,在其它地方点击之后,pop1.IsOpen为false
      

  4.   

    在StaysOpen="False"的情况下,点击border以外的地方,IsOpen会自动变为False,此时pop1就消失了。
    点击border以内的地方,IsOpen不会变为False,一直保持True,pop1还是消失了。所以之后再怎么让IsOpen=True,pop1都不会显示。
    可以理解成此时被遮住了。但是在点击border以外的地方的时候,的确是关闭了。
      

  5.   

    关键是,点击border以内的地方,IsOpen应该变为False的啊,为什么不会变为false呢?
    StaysOpen属性为false时,点击Popup以外的地方,就会关闭的啊
      

  6.   

    关键是,点击border以内的地方,IsOpen应该变为False的啊,为什么不会变为false呢?
    StaysOpen属性为false时,点击Popup以外的地方,就会关闭的啊
      

  7.   

    关键是,点击border以内的地方,IsOpen应该变为False的啊,为什么不会变为false呢?
    StaysOpen属性为false时,点击Popup以外的地方,就会关闭的啊
      

  8.   

    关键是,点击border以内的地方,IsOpen应该变为False的啊,为什么不会变为false呢?
    StaysOpen属性为false时,点击Popup以外的地方,就会关闭的啊