
我想为集合中的每个对象显示一个超链接,并将每个超链接的Command设置为相同的命令,并将objectID作为CommandParemeter传递.例如
// VIEw Modelpublic class Myviewmodel : viewmodelBase{ // Raises PropertyChanged event,ommited here public List<MyClass> MyList {....} public RelayCommand<int> MyCommand {....}} 我将UserControl的DataContext设置为上面的viewmodel类.此UserControl的XAML如下:
<UserControl> <ItemsControl ItemsSource="{Binding Path=MyList}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <Hyperlinkbutton Content="{Binding Path=Description}" Command="{Binding Path=MyCommand}" CommandParameter="{Binding Path=MyClassID}"/> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl></UserControl> 超链接内容的描述正确显示,但命令永远不会触发,我想这是因为它在MyClass对象中寻找一个命令?
我如何绑定到UserControls DataContext.MyCommand而不是它正在寻找的MyClass.MyCommand?
解决方法 不幸的是,我们在WPF的relativeSource标记扩展上没有FindAncestor模式,所以你不能使用它(这将在Silverlight 5中添加).这很讨厌,但您可以为UserControl元素指定名称,并使用Elementname绑定绑定到分配给其DataContext的对象上的命令.例如:
<UserControl name="root">
然后绑定命令(使用UserControl的DataContext中的点表示法):
Command="{Binding Path=DataContext.MyCommand,Elementname=root}" 试一试.
总结以上是内存溢出为你收集整理的silverlight – 从ItemsControl.ItemTemplate中绑定到View Model属性全部内容,希望文章能够帮你解决silverlight – 从ItemsControl.ItemTemplate中绑定到View Model属性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)