WIndows手机8弹出控制位置

时间:2013-11-22 05:26:19

标签: windows-phone-8 popup

什么属性会使Popup控件在Windows手机应用程序中准确显示鼠标(触摸屏幕上手指位置上方的真实设备上)? 使用的xaml是

<Grid Grid.Row="2">
        <phone:WebBrowser IsScriptEnabled="True"  MouseMove="mainBrowserControl_MouseMove" x:Name="mainBrowserControl"  />
        <Popup Name="ActionMenus" IsOpen="False">
            <StackPanel Orientation="Horizontal" Background="Black" >
                <Button Name="btnA1" Click="btnAq_Click">Annotation</Button>
                <Button Name="btnHq" Click="btnHq_Click">Highlight</Button>
        </Popup>
</Grid>

我用来显示Popup的代码是

 private void mainBrowserControl_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
    {
            ActionMenus.IsOpen = true;
    }

但是Popup的位置在Grid的顶部。我怎样才能使它完全高于鼠标指针(或用户触摸屏幕的位置)

在WPF Popup中,我可以看到更多属性,如Placement,如果我们使用Placement =“Mouse”,弹出窗口将完全显示在鼠标上,但Windows手机中缺少此属性

2 个答案:

答案 0 :(得分:0)

由于您没有在网格中创建任何行,因此添加到网格中的任何元素都将放在所有其他元素之上。

为了将弹出窗口放在您想要的位置,您必须找出用户点击的位置。它可以在方法的MouseEventArgs输入中找到:

http://msdn.microsoft.com/en-us/library/system.windows.input.mouseeventargs.getposition(v=vs.110).aspx

然后相应地放置ActionMenus。

答案 1 :(得分:0)

首先,如果您想要弹出显示在页面的任何位置,您应该: 1)创建第二个网格,在你的内容上没有任何行或列(水平和垂直对齐设置为拉伸) - 它将是你的放置字段,将占用整个页面。

OR

2)添加一个弹出式Grid.Row和Grid.Column跨度。

下一步:

正如emedbo所说,你应该抓住MouseDown事件并获取MouseEventArgs坐标。然后你就可以做到:

如果您选择方法1:

 Popup pop = new Popup();
 pop.Margin = new Thikness (X,Y,0,0) // To set margin left and top to show popups left top corner under the finger.
 Grid.Children.Add(pop);
 //Syntax maybe little incorrect, because i'm writting this from my mind

如果您选择了方法2:

 Popup pop = new Popup();
 pop.Margin = new Thikness (X,Y,0,0) // To set margin left and top to show popups left top corner under the finger.
 pop.*** //Here must be added Rowspan and Columnspan of the parent container
 Grid.Children.Add(pop);
 //Syntax maybe little incorrect, because i'm writting this from my mind