如何将对象附加到C#/.NET中的事件?

如何将对象附加到C#/.NET中的事件?,c#,.net,pixelsense,C#,.net,Pixelsense,我为LibraryContainer定义了以下数据模板: <DataTemplate x:Key="ContainerItemTemplate"> <Grid> <Border BorderThickness="1" BorderBrush="White" Margin="3"> <s:SurfaceTextBox IsReadOnly="True" Widt

我为LibraryContainer定义了以下数据模板:

<DataTemplate x:Key="ContainerItemTemplate">
            <Grid>
                <Border BorderThickness="1" BorderBrush="White" Margin="3">
                    <s:SurfaceTextBox IsReadOnly="True" Width="120" Text="{Binding Path=name}" Padding="3"/>
                </Border>
                <s:SurfaceButton Content="Expand" Click="SourceFilePressed"></s:SurfaceButton>
            </Grid>
        </DataTemplate>

在SourceFilePressed方法中,谁可以获取绑定到与按下按钮位于同一网格中的SurfaceTextBox的对象?是否可以在DataTemplate中将此对象附加到单击事件?

如果我正确分析了您的问题,我认为您可以这样做:

private void SourceFilePressed(object sender, RoutedEventArgs e)
{
    var obj = (sender as FrameworkElement).DataContext;
}

解释:发送方是事件的源,因此它是
表面按钮
。它是一个
FrameworkElement
,因此具有
DataContext
属性。
DataContext
是一个继承属性,因此除非您在
SurfaceButton
上显式设置它,否则它将从其父级继承其
DataContext
DataTemplate
DataContext
是它正在模板化的数据项,因此您可以看到
SurfaceButton
将具有与其
DataContext
相同的对象,非常感谢您的解释!
private void SourceFilePressed(object sender, RoutedEventArgs e)
{
    var obj = (sender as FrameworkElement).DataContext;
}