如何从ItemsControl的Item代码后面访问ItemsControl的ItemsSource元素?

cat*_*all 3 wpf code-behind itemscontrol

我一直在谷歌搜索这个问题几个小时,我遇到的最好的事情是ItemContainerGenerator,这不是我需要的

在我的主视图中,我有一个ItemsControl,它绑定到一个对象集合:

<ItemsControl ItemsSource="{Binding Path=Concepts}"
              ItemTemplate="{StaticResource ActivationLevelTemplate}"
              />
Run Code Online (Sandbox Code Playgroud)

ActivationLevelTemplate只是另一个视图:

 <DataTemplate x:Key="ActivationLevelTemplate">
    <view:ConceptActivationView Height="50"/>
 </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

在此视图中,有一个文本块,绑定到上述集合中对象的属性.该属性显示正确,现在我需要从视图的代码后面访问同一对象的其他属性.这似乎微不足道,但我无法让它发挥作用.

<TextBlock Text="{Binding Path=Name}"
           HorizontalAlignment="Center"
           />
<d3:Plotter2D Name="Plotter"/>    
Run Code Online (Sandbox Code Playgroud)

H.B*_*.B. 5

重要的是您尝试访问该对象的上下文.例如,如果您处理DataTemplate中的事件,您可以轻松地从发送方的DataContext中获取对象(必须是FrameworkElement),例如,如果我要处理按钮单击:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var button = (FrameworkElement)sender;
    var employee = (Employee)button.DataContext;
    //...
}
Run Code Online (Sandbox Code Playgroud)

实际上,如果您的整个视图都在DataTemplate中,您也可以直接从View的DataContext中获取对象.