Silverlight 如何绑定到数据源类中定义的方法?

Silverlight 如何绑定到数据源类中定义的方法?,silverlight,binding,silverlight-5.0,Silverlight,Binding,Silverlight 5.0,我有一个对象列表,它是数据源。诸如此类: public class DataList { public List<DataItem> SomeItems; public void RemoveItem(DataItem item) { SomeItems.Remove(item); } } <layout:Accordion ItemsSource="{Binding SomeItems}" SelectionMode

我有一个对象列表,它是数据源。诸如此类:

public class DataList
{
     public List<DataItem> SomeItems;
     public void RemoveItem(DataItem item)
     {
         SomeItems.Remove(item);
     }
}
<layout:Accordion ItemsSource="{Binding SomeItems}" SelectionMode="ZeroOrMore" HorizontalAlignment="Stretch" 
ItemTemplate="{StaticResource SomeItemTemplate}">
...
公共类数据列表
{
公共物品清单;
公共无效删除项(数据项)
{
删除(项目);
}
}
很简单。 现在我有了一个引用到此数据源的XAML。诸如此类:

public class DataList
{
     public List<DataItem> SomeItems;
     public void RemoveItem(DataItem item)
     {
         SomeItems.Remove(item);
     }
}
<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.removietem?其思想是将该项传递给知道一切的父类(DataList)。我可以在DataItem类本身中定义这个方法(remove),但在这种情况下,我需要传递(在构造函数中)父类,因为一个项对父类一无所知

找到了解决方案。看这里(http://msdn.microsoft.com/en-us/library/system.windows.data.relativesource%28v=vs.95%29.aspx)

使用
如果您使用的是silverlight 5,则可以使用绑定:



这样做的目的是找到层次结构更高的可视元素,并获取它的dataContext(DataList)。

谢谢。如果我尝试您的方法,我会遇到异常“{System.InvalidOperationException:AncestorType必须在RelativeSource.Mode设置为FindAncestor.at System.Windows.Data.RelativeSource.System.ComponentModel.ISupportInitialize.EndInit()at MS.Internal.FrameworkCallbacks.SupportInitializeEndInit(IntPtr nativeTarget)}”时设置”。这意味着什么?这意味着您需要指定要查找的祖先类型。你的情况是手风琴。类似这样的东西应该可以:RelativeSource={RelativeSource AncestorType={x:Type local:Accordion}}谢谢,我使用You's welcome:)解决了这个问题:要么您的UserControl具有相同的DataContext,要么Accordion继承自UserControl,要么运行时在搜索DataContext不为null的继承成员时以某种方式遍历了该树。