什么属性会使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手机中缺少此属性
答案 0 :(得分:0)
由于您没有在网格中创建任何行,因此添加到网格中的任何元素都将放在所有其他元素之上。
为了将弹出窗口放在您想要的位置,您必须找出用户点击的位置。它可以在方法的MouseEventArgs输入中找到:
然后相应地放置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