WPF学习笔记(2):准确定位弹出窗
程序员文章站
2022-05-14 10:06:13
效果图:使弹出的列表框紧随在单元格的下边缘。 第一次,尝试在XAML中设置Popup的定位方式:Placement="Mouse"。基本能够定位,但当在输入前移动鼠标,列表框就会随鼠标位置显示,偏离了预定位置。 第二次,尝试在XAML中设置Popup的定位目标:PlacementTarget="{B ......
效果图:使弹出的列表框紧随在单元格的下边缘。
第一次,尝试在xaml中设置popup的定位方式:placement="mouse"。基本能够定位,但当在输入前移动鼠标,列表框就会随鼠标位置显示,偏离了预定位置。
第二次,尝试在xaml中设置popup的定位目标:placementtarget="{binding elementname=txtacctname}">。但由于textbox位于datagridtemplatecolumn中,不起作用。
第三次,改变思路,通过获取textbox的位置后,再以此设置popup的位置,成功解决问题。定位目标设置为datagrid,定位方式设置为relative(以目标控件的左上角为原点),代码如下:
<popup name="popacct" staysopen="false" placement="relative" maxheight="500" placementtarget="{binding elementname=dgvoucher}">
1 private void txtacctname_gotfocus(object sender, routedeventargs e) 2 { 3 point position = (sender as textbox).translatepoint(new point(), dgvoucher); 4 popacct.horizontaloffset = position.x; 5 popacct.verticaloffset = position.y + dgvoucher.rowheight; 6 }
上一篇: 一个asp函数, 解决SQL Injection漏洞
下一篇: 爆笑之逗B剧场第302季