Silverlight XAML:引用代码隐藏类

时间:2009-12-08 01:25:13

标签: silverlight xaml silverlight-3.0 prism

假设以下视图模型定义:

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

}

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

}

UserControl后面带有以下代码:

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属性?

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

UserControl具有特定名称并且我能够使用ElementName绑定之前,但现在我的UserControl在同一父视图中多次使用,所以我不能再使用该技术,我无法弄清楚如何在XAML中执行此操作。

如果这是我唯一的选择,我可以在代码隐藏中手动执行,但如果可能的话,我宁愿在XAML中以声明方式执行此操作。

1 个答案:

答案 0 :(得分:1)

您需要DataContextProxy才能使用此功能,因为您不再处于UserControl的上下文中。你已经离开了这一点,没有像DataContextProxy这样的东西回到那个上下文的好方法。我已将它用于我的项目,效果很好。