2009-12-08 119 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