Тестирование XAML - PullRequest
       1

Тестирование XAML

1 голос
/ 26 февраля 2010

В модели у меня есть наблюдаемая коллекция объектов. С помощью ItemsControl (и UserControl) я отображаю эти элементы (фигуры).

Теперь я хочу провести тестирование на родительском холсте.

Например, когда я выполняю этот код:

HitTestResult result = VisualTreeHelper.HitTest(allContent, new Point(70, 340));

Я получаю HitTestResult, но я хочу получить объект в модели, представляющий эту «щелчковую» форму.

Есть ли возможность получить объект?

1 Ответ

2 голосов
/ 26 февраля 2010

Чтобы добраться до DataContext, который связан с рассматриваемым ListBoxItem, я делаю это:

HitTestResult result = VisualTreeHelper.HitTest( itemsContainer, position ) ;
FrameworkElement currentElement = result.VisualHit as FrameworkElement ;

while( (currentElement is ListBoxItem)==false
    && currentElement!=itemsControlElement 
    && currentElement!=null)
{
    currentElement = VisualTreeHelper.GetParent(currentElement) as FrameworkElement ;
}

if( currentElement != null )
{
    object dataSource = currentElement.DataContext ;
}

Если вы переключите обход стека для поиска UserControl вместо ListBoxItem и измените значение itemsControlElement на то, чем является ваш контейнер ItemsControl, это должно предотвратить нежелательные обходы визуального дерева.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...