Я разрабатываю мобильное приложение для удаленного управления WPF-интерфейсом. Пользовательский интерфейс управляется третьей стороной, и третье лицо может добавлять \ удалять кнопки в любое время. Я передаю пользовательский интерфейс клиентскому приложению Windows store и отправляет сенсорные координаты на сервер. Затем сервер использует HitTest, чтобы получить элемент в интерфейсе WPF и запустить действие.Использование HitTest для удаленного управления WPF
Это работает большую часть времени, но обратный вызов фильтра не вызван несколько раз. Это фиктивный код.
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Point p = new Point(77, 45);
// Coordinates received on server comes here
VisualTreeHelper.HitTest(this,
new HitTestFilterCallback(FilterCallback),
new HitTestResultCallback(ResultCallback),
new PointHitTestParameters(p));
}
private HitTestFilterBehavior FilterCallback(DependencyObject target)
{
System.Diagnostics.Debug.WriteLine(target.GetType());
if (typeof(Button) == target.GetType())
{
Button b = (Button)target;
Button_Click(b, null);
return HitTestFilterBehavior.Stop;
}
else
{
return HitTestFilterBehavior.Continue;
}
}
private HitTestResultBehavior ResultCallback(HitTestResult result)
{
System.Diagnostics.Debug.WriteLine(result.VisualHit.GetType());
return HitTestResultBehavior.Stop;
}
Любой успех здесь? – Clemens
Приложение использует панель всплывающих окон, чтобы отобразить некоторые элементы управления, после того как эта панель активирована в первый раз, она скрыта с использованием свойства видимости, поэтому каждый раз, когда я нажимаю на проверку координат, я получаю ссылку на невидимую всплывающую панель, которая на вершине. Я связался с разработчиком приложения для решения. – Suneesh
Затем вам следует продолжить тест попадания, вернув 'Continue' вместо' Stop' из вашего ResultCallback. Вы хотя бы пробовали это? – Clemens