Как определить пользовательский элемент управления под курсором мыши, когда мышь находится в C # -WPF? - PullRequest
0 голосов
/ 21 февраля 2012

Я использую RadioButton для создания пользовательского элемента управления и хочу знать, как я могу определить его, когда мышь перемещается над ним, пока левая кнопка нажата и удерживается нажатой?Конечно, я знаю, что это возможно с VisualTreeHelper, но этот метод возвращает только самый верхний элемент (не мой собственный элемент управления).

1 Ответ

2 голосов
/ 21 февраля 2012

Вы можете использовать подобный фрагмент, чтобы копать глубже в VisualTree и вернуть первый найденный элемент управления указанного типа:

public static T GetVisualChild<T>(Visual parent) where T : Visual
{
    T child = default(T);
    int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
    for (int i = 0; i < numVisuals; i++)
    {
        Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
        child = v as T;
        if (child == null)
        {
            child = GetVisualChild<T>(v);
        }
        if (child != null)
        {
            break;
        }
    }
    return child;
}

Чтобы найти MyCustomControl внутри элемента управления someVisual:

MyCustomControl myControl = GetVisualChild<MyCustomControl>(someVisual);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...