c#-在Silverlight 4应用程序中的列表框上单击鼠标右键
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-在Silverlight 4应用程序中的列表框上单击鼠标右键,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2122字,纯文字阅读大概需要4分钟。
内容图文
我正在尝试实现以前在Winforms应用程序中理所当然的功能.我是Silverlight新手,所以希望所有这些内容都是基本的.
我在Silverlight 4应用程序中有一个列表框.我想做以下事情:
>右键单击列表框
>将项目放在我点击突出显示的位置下方
>我想弹出一个上下文菜单(上下文菜单中有我自己的项目)
到目前为止,从我的研究来看,似乎在Silverlight中没有ContextMenu构造,相反,我们必须构建一个Grid / Canvas结构并将其附加到Popup对象,然后弹出该对象.
我的问题如下:
>要完成第二项,我需要在列表框中进行某种命中测试.我不知道该怎么做,而我的google-fu也帮不上忙.
>确定鼠标下的索引后,如何实际选择该项目?
>我可以在某个地方使用可重用的上下文菜单组件吗?如果组件允许任意子菜单,则可额外获得积分.
解决方法:
我一直在寻找相同的东西.我在CodePlex上检查了Silverlight Control Toolkit,并仔细阅读了样本(这是非常方便的资源),以下是我发现的解决方案:
>为您的列表框创建一个ItemTemplate
>在您要对ItemTemplate进行“右键单击”的部分中,设置System.Windows.Controls.Input.Toolkit命名空间中存在的附加属性ContextMenuService.ContextMenu
>将MenuItem控件添加到ContextMenu并将Click属性设置为相应的click事件处理程序
>在事件处理程序中,从发送方获取DataContext(您可以使用它在ListBox中找到相应的元素)
>要使该元素处于选中状态,只需在列表框中为其设置SelectedItem属性
>将任何自定义逻辑添加到事件处理程序
样本页面中有一个示例,只需从导航窗格中转到“ Input-> ContextMenu”.
如果您想简洁明了,下面是一个简化的示例:
<ListBox ItemsSource="{StaticResource People}"
Name="myListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}">
<controlsInputToolkit:ContextMenuService.ContextMenu>
<controlsInputToolkit:ContextMenu>
<controlsInputToolkit:MenuItem Header="Show in MessageBox"
Click="show_Click" />
</controlsInputToolkit:ContextMenu>
</controlsInputToolkit:ContextMenuService.ContextMenu>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
与:
xmlns:controlsInputToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
对于代码:
private void show_Click(object sender, RoutedEventArgs e)
{
var person = ((MenuItem)sender).DataContext as Person;
if (null == person) return;
MessageBox.Show("My Name is: " + person.Name);
myListBox.SelectedItem = person;
}
我希望这有帮助 :)
内容总结
以上是互联网集市为您收集整理的c#-在Silverlight 4应用程序中的列表框上单击鼠标右键全部内容,希望文章能够帮你解决c#-在Silverlight 4应用程序中的列表框上单击鼠标右键所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。