Listview中的TextBox - 在TextBox TextChanged上获取ListViewItem

时间:2012-09-26 19:03:19

标签: c# wpf xaml

我有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

我该怎么办?

1 个答案:

答案 0 :(得分: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);
        }