2013-01-10 46 views
1

關於如何移動職位的任何想法?這裏的菜單:我可以更改彈出框的對齊方式,使其顯示在左側而不是按鈕的右側?

enter image description here

而這裏的XAML:

<Canvas MinHeight="25" Panel.ZIndex="99"> 
<ToggleButton x:Name="btnPluginMenu" Content="CT" Width="48" Height="48" Canvas.Left="452" Canvas.Top="263"/> 
<Popup Placement="Top" PlacementTarget="{Binding ElementName=btnPluginMenu}" IsOpen="{Binding ElementName=btnPluginMenu, Path=IsChecked}"> 
<Grid Background="Gray" Width="175" Height="130"> 
        <Grid.BitmapEffect> 
         <DropShadowBitmapEffect /> 
        </Grid.BitmapEffect> 
</Grid> 
      </Popup> 
</Canvas> 

回答

2

MSDN可以使用Placement=Relative模式:

彈出控制相對於向上方的A位置PlacementTarget的左側角落,以及由Horizo​​ntalOffset和VerticalOffset屬性值定義的偏移量。如果屏幕邊緣遮擋了彈出窗口,則控件將自身重新定位以與屏幕邊緣對齊。

換句話說,你可以做這樣的事情:

<ToggleButton x:Name="btnPluginMenu" Content="CT" Width="48" Height="48" Canvas.Left="452" Canvas.Top="263"/> 
<Popup Placement="Relative" HorizontalOffset="-120" VerticalOffset="-130" PlacementTarget="{Binding ElementName=btnPluginMenu}" IsOpen="{Binding ElementName=btnPluginMenu, Path=IsChecked}"> 

通知負值HorizontalOffset的使用和VerticalOffset

+0

這工作。謝謝! – ernest

-1

從按鈕點擊事件

private void button_Click(object sender, RoutedEventArgs e) 
{ 
    Button button = sender as Button; 
    popup.PlacementTarget = button; 
    popup.HorizontalOffset = -120; 
    popup.VerticalOffset = -130; 
    popup.IsOpen = true; 
} 
相關問題