2009-12-08 88 views
0

假设下面的视图模型定义:的Silverlight XAML:引用代码隐藏类

public class MyObject { 
public string Name { get; set; } 

}

public interface IMyViewModel { 
ICommand MyCommand { get; } 
IList<MyObject> MyList { get; } 

}

并用下面的代码后面的用户控件:

public class MyView : UserControl { 
public IMyViewModel Model { get; } 

}

如果我的XAML看起来像这样:

<UserControl> 
<ListBox ItemsSource="{Binding MyList}"> 
    <ListBox.ItemTemplate> 
     <TextBlock Text="{Binding Name}" /> 
     <Button Content="Execute My Command" cmd:Click.Command="{Binding Path=MyCommand, ?????????}" cmd:Click.CommandParameter="{Binding}" /> 
    </ListBox.ItemTemplate> 
</ListBox> 

我如何可以绑定我Button到我的代码隐藏类的ICommand财产?

我使用棱镜和SL 3.0,我需要每个按钮在我的列表框绑定到相同的命令在我视图模型。

之前我UserControl有一个特殊的名字,我是能够使用ElementName约束力,但现在我的UserControl在同一父视图多次使用,所以我不能使用这种技术了,我想不通如何在XAML中做到这一点。

如果是我唯一的选择,我可以在做手工代码隐藏,但我宁愿做声明在XAML,如果可能的话。

回答

1

需要在此一DataContextProxy工作,因为你的用户控件的背景下已不再。你已经摆脱了这种情况,没有像DataContextProxy这样的东西,没有好的办法重新回到这个上下文中。我用它来做我的项目,效果很好。

+0

这就是为什么我爱计算器... – TravisWhidden 2010-05-24 23:54:48