В моем приложении я использую тегированные объекты. Теперь я хотел бы по-разному реагировать не только на объект, который помещен на поверхность, но и на элемент, на который он помещен. Возможно ли это как-то? Я не мог найти никакой информации об этом.Как определить, на каком элементе UIElement помечен тег?
0
A
ответ
1
Да, это возможно. Пожалуйста, покажите нам свой код, чтобы мы могли помочь вам лучше.
То, что вы ищете, возможно, является отражением.
Знаете ли вы, что всегда можете проверить, имеет ли объект определенный тип оператора is
?
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);
2
Вы могли бы сделать HitTest. В основном вы получаете точку относительно вашего окна и смотрите, какой элемент визуального дерева попадает. Нет образца кода под рукой, но вы найдете много, используя HitTest и WPF в google.
Ах да, это не проблема. Я просто не знаю, где поймать событие, если добавлен тегированный объект. У меня нет большого кода, просто добавлен TagVisualizer в мой основной план. – RoflcoptrException
см. Мое редактирование, HTH – Falcon