Как определить, на каком UIElement размещен помеченный объект? - PullRequest
0 голосов
/ 01 ноября 2010

В моем приложении я использую помеченные объекты.Теперь я хотел бы по-разному реагировать не только на объект, который помещен на поверхность, но также и на элемент, на который он помещен.Возможно ли это как-то?Я не смог найти информацию об этом.

Ответы [ 2 ]

2 голосов
/ 11 ноября 2010

Вы можете сделать HitTest. По сути, вы получаете точку относительно своего окна и смотрите, какой элемент визуального дерева подвергается удару. Нет примера кода под рукой, но вы найдете много, используя HitTest и WPF на Google.

1 голос
/ 01 ноября 2010

Да, это возможно.Пожалуйста, покажите нам свой код, чтобы мы могли помочь вам лучше.

Вероятно, вы ищете Reflection.

Знаете ли вы, что всегда можно проверить, принадлежит ли объект определенного типа с помощьюis operator?

var tag = myDependencyObject.Tag;
if(myDependencyObject is CheckBox)
{
    //...
}
else if(myDependencyObject is TextBox)
{
    //...
}

Чтобы обнаружить изменение свойства тега, прослушайте событие DependencyPropertyChanged, например:

DependencyPropertyDescriptor prop = DependencyPropertyDescriptor.FromProperty(
    FrameworkElement.TagProperty,
    typeof(FrameworkElement));

prop.AddValueChanged(aTaggedControl, this.YourEventHandlerMethod);
...