如何将对象附加到C#/.NET中的事件?
我为LibraryContainer定义了以下数据模板:如何将对象附加到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
<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;
}