gpt4 book ai didi

Silverlight - 获取 DataTemplate 的 ItemsControl

转载 作者:行者123 更新时间:2023-12-04 02:43:26 24 4
gpt4 key购买 nike

我有一个使用 DataGrid 的 Silverlight 应用程序。在该 DataGrid 内部,我有一个 DataTemplate,其定义如下:

<Grid x:Name="myGrid" Tag="{Binding}" Loaded="myGrid_Loaded">
<ItemsControl ItemsSource="{Binding MyItems}" Tag="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Horizontal" Width="138">
<TextBlock Text="{Binding Type}" />
<TextBox x:Name="myTextBox" TextChanged="myTextBox_TextChanged" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>

当用户在 TextBox 中输入文本时,我有一个必须在此时触发的事件 (myTextBox_TextChanged)。当该事件被触发时,我想获取作为此 TextBox 容器的 ItemsControl 元素。如何从我的事件处理程序中获取 ItemsControl?

请注意:因为 ItemsControl 位于 DataGrid 的 DataTemplate 中,所以我不相信我可以只添加一个 x:Name 并从我的代码隐藏中引用它。或者有没有办法做到这一点?

谢谢!

最佳答案

结合使用 ItemsControl.ItemsControlFromItemContainerVisualTreeHelper.GetParent 您应该能够找到您的 ItemsControl

var txt = sender as TextBox;
var panel1 = VisualTreeHelper.GetParent(txt);
var panel2 = VisualTreeHelper.GetParent(panel1);
var contentPresenter = VisualTreeHelper.GetParent(panel2);
var ic = ItemsControl.ItemsControlFromItemContainer(contentPresenter);

您可能还想在 Web 上搜索 VisualTreeHelper 递归函数,以使其中一些更容易。

关于Silverlight - 获取 DataTemplate 的 ItemsControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com