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

时间:2010-10-26 21:47:24

标签: c# .net pixelsense

我为LibraryContainer定义了以下DataTemplate:

<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如下:

 private void SourceFilePressed(object sender, RoutedEventArgs e)
        {
            Logging.Logger.getInstance().log(sender.ToString());
            e.Handled = true;
        }

在SourceFilePressed方法中,我可以获取绑定到与按下的按钮位于同一网格中的SurfaceTextBox的对象吗?我可以在DataTemplate中以某种方式将此对象附加到Click-Event吗?

1 个答案:

答案 0 :(得分:1)

如果我正确地解析了你的问题,我认为你可以这样做:

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

要解释:发件人是事件的来源,所以它是SurfaceButton。它是FrameworkElement,因此具有DataContext属性。 DataContext是一个继承的属性,因此除非您在SurfaceButton上明确设置,否则它将从其父级DataContext继承它GridDataTemplate的{​​{1}}是其模板化的数据项,因此您可以看到DataContextSurfaceButton具有相同的对象。