silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了silverlight – 从ItemsControl.ItemTemplate中绑定到View Model属性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我在ViewModel中有一组对象和一个命令. 我想为集合中的每个对象显示一个超链接,并将每个超链接的Command设置为相同的命令,并将objectID作为CommandParemeter传递.例如 // View Model public class MyViewModel : ViewModelBase { // Raises PropertyChanged event, ommited
我在viewmodel中有一组对象和一个命令.

我想为集合中的每个对象显示一个链接,并将每个超链接的Command设置为相同的命令,并将objectID作为CommandParemeter传递.例如

// View Model
public 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}"

试一试.

@H_801_56@

大佬总结

以上是大佬教程为你收集整理的silverlight – 从ItemsControl.ItemTemplate中绑定到View Model属性全部内容,希望文章能够帮你解决silverlight – 从ItemsControl.ItemTemplate中绑定到View Model属性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。