1

我有一个ListView显示几个TextBoxes. 对于每一个TextBox,我都在捕捉一个SelectionChanged事件。

我的 XAML 文件如下所示:

<ListView>
    <GridView>
        ...
        <DataTemplate>
            <TextBox SelectionChanged="Box_SelectionChanged" />
        </DataTemplate>
        ...
    </GridView>
</ListView>

我的 Xaml CS 文件如下所示:

private void Box_SelectionChanged(object sender, TextChangedEventArgs e) {}

在我的Box_SelectionChanged函数中,我想获取ListViewItem更新文本框的位置。

我该怎么做?

4

1 回答 1

5

你可以试试这个:

将此方法添加到您的类中:

public static T FindVisualParent<T>(UIElement element) where T : UIElement
        {
            UIElement parent = element; while (parent != null)
            {
                T correctlyTyped = parent as T; if (correctlyTyped != null)
                {
                    return correctlyTyped;
                }
                parent = VisualTreeHelper.GetParent(parent) as UIElement;
            } return null;
        }

并在 Box_SelectionChanged 事件处理程序中调用此方法:

        private void Box_SelectionChanged(object sender, RoutedEventArgs e)
        {          
            var tmp = FindVisualParent<ListViewItem>(sender as TextBox);
        }
于 2012-09-26T19:30:16.167 回答