2012-09-11 51 views
1

我有一个ToggleButton,点击时将IsActionMenuOpen设置为true,这样就可以显示弹出窗口。我希望得到的结果是弹出窗口的位置将在here的右下方。任何想法如何做到这一点?另外,如果窗口正在调整大小,是否可以找到解决方案,以便弹出窗口也会移动?弹出右下的位置

<ToggleButton x:Name="PART_TGAction"> 
         <ToggleButton.Template> 
          <ControlTemplate> 
           <TextBlock x:Name="PART_SubjectActions" 
             Text="Actions" 
             Margin="4,0,0,0" 
               PreviewMouseLeftButtonDown="PART_SubjectActions_PreviewMouseLeftButtonDown" 
             /> 
          </ControlTemplate> 
         </ToggleButton.Template> 
        </ToggleButton> 
        <Popup IsOpen="{Binding IsActionMenuOpen, Mode=OneWay}" 
          x:Name="PART_Popup"> 
         <Border Background="White"> 
          ...... 
         </Border> 
        </Popup> 

回答

1

我能得到这个通过将其放置在用户控件的Loaded事件的工作:

PART_Popup.CustomPopupPlacementCallback += (Size popupSize, Size targetSize, Point offset) => new[] { new CustomPopupPlacement() { Point = new Point(targetSize.Width - popupSize.Width, targetSize.Height) } }; 
+1

注意:不要忘记设置布局=“自定义”为你弹出对象这工作(让我困惑了一会儿,然后才弄明白这一点) – David