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

标签 wpf itemscontrol code-behind

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

<ItemsControl ItemsSource="{Binding Path=Concepts}"
              ItemTemplate="{StaticResource ActivationLevelTemplate}"
              />

ActivationLevelTemplate 只是另一个 View :

 <DataTemplate x:Key="ActivationLevelTemplate">
    <view:ConceptActivationView Height="50"/>
 </DataTemplate>

在这个 View 中有一个文本 block ,绑定(bind)到上述集合中的对象的属性。该属性显示正确,现在我需要从后面的 View 代码访问同一对象的其他属性。这看起来微不足道,但我无法让它发挥作用。

<TextBlock Text="{Binding Path=Name}"
           HorizontalAlignment="Center"
           />
<d3:Plotter2D Name="Plotter"/>    

我遇到的最好的事情是ItemContainerGenerator,但它似乎并不是我们所需要的。

最佳答案

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

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

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

关于wpf - 如何从 ItemsControl 的 Item 后面的代码访问 ItemsControl 的 ItemsSource 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183987/

相关文章:

wpf - 具有相同 ViewModel 的多个 View

c# - 为什么我的 ItemsControls 中的项目不水平布局?

WPF 从具有 SelectionMode=Extended 的 ListBox 拖放

javascript - 为什么我的文档正文 onload 事件不断发生?

c# - 动态javascript错误

wpf 定义样式的自定义属性

.net - 如何使用数据绑定(bind)在 WPF 中创建无限深度的 TreeView?

c# - 2D 绘图性能(GDI+ 与 SlimDX)

c# - 为 Windows Phone 8 创建两列、垂直堆叠的列控件

c# - 从代码隐藏 Web 方法调用 Javascript 方法