【发布时间】:2012-04-02 18:16:08
【问题描述】:
我有一个作为数据源的对象列表。类似的东西:
public class DataList
{
public List<DataItem> SomeItems;
public void RemoveItem(DataItem item)
{
SomeItems.Remove(item);
}
}
非常简单。 现在我有一个引用此数据源的 XAML。类似的东西:
<layout:Accordion ItemsSource="{Binding SomeItems}" SelectionMode="ZeroOrMore" HorizontalAlignment="Stretch"
ItemTemplate="{StaticResource SomeItemTemplate}">
...
SomeItemTemplate 模板在 App.xaml 中定义的位置
<DataTemplate x:Key="SomeItemTemplate">
<Grid>
..
<Button Command={?} Content="Remove" CommandParameter="{Binding}">
</DataTemplate>
如何绑定命令以引用 DataList.RemoveItem?这个想法是将项目传递给知道一切的父类(DataList)。我可以在 DataItem 类本身中定义此方法(删除),但在这种情况下,我需要(在构造函数中)传递父类,因为项目对父类一无所知。
找到解决方案。请参阅此处 (http://msdn.microsoft.com/en-us/library/system.windows.data.relativesource%28v=vs.95%29.aspx)
使用
<Button x:Name="btnDeleteItem" Command="{Binding DataContext.RemoveItemCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"
【问题讨论】:
标签: silverlight binding silverlight-5.0