Сохранение пользовательского курсора на всплывающем окне WPF - PullRequest
0 голосов
/ 08 июня 2011

У меня есть несколько пользовательских курсоров в моем приложении. Я использовал информацию, найденную во втором ответе здесь , чтобы создать свой собственный курсор. Это хорошо работает. Моя проблема в том, что, когда я наведу курсор мыши на всплывающее окно, курсор появляется как курсор по умолчанию. Странно то, что когда я перемещаю свою мышь из всплывающего окна, мой пользовательский курсор возвращается. Итак, я создаю свой курсор так:

UserControl.xaml:

    <TextBlock 
        x:Name="SupprimerV" 
        x:Key="SupprimerV" 
        Cursor="../Utils/Supprimer.cur"/> 

В UserControl.xaml.cs:

this.Cursor = ((TextBlock)this.FindResource("SupprimerV")).Cursor;

Затем я вызываю свой собственный элемент управления SimplePopup, который происходит от Popup следующим образом:

_pop = new SimplePopup(this);  //Irrelevant information omitted

SimplePopup.cs:

public simplePopup(FrameworkElement relativeTo)
    {
        this._relativeTo = relativeTo;
        this.Cursor = relativeTo.Cursor; //Trying to set the cursor of the popup but dosent work
        ...
    }

Я пытался установить всплывающий курсор, но, похоже, он не работает. Курсор отлично работает на моем UserControl, но не работает, когда мышь находится над всплывающим окном.

Я что-то упустил? Что-то мешает моему курсору правильно работать во всплывающем окне?

Спасибо за вашу помощь, Извините за орфографические ошибки ^^

1 Ответ

0 голосов
/ 09 июня 2011

Хорошо, поэтому я нашел способ, как заставить мой курсор правильно отображаться в моем всплывающем окне.Мой SimplePopup использует границу в качестве дочернего элемента.Я попытался установить курсор этой границы на курсор _relativeTo следующим образом:

popBorder.Cursor = _relativeTo.Cursor;

, и это сработало. Мне было интересно, почему я провел небольшое исследование и нашел интересный фрагмент текста:

Pro WPF в c # 2010 - Глава 6, стр. 186: «Вы должны установить свойство Background, если хотите видеть свой контент, потому что он не будет унаследован от вашего окна, и вам нужно добавить границу самостоятельно (элемент Borderотлично работает для этой цели).http://archon.name/files/books/programming/Apress.Pro.WPF.in.C%23.2010.Windows.Presentation.Foundation.in.NET.4.pdf

Очевидно, что всплывающее окно не будет наследовать какие-либо свойства своего создателя (включая курсор).

Я думаю, что поскольку всплывающее окно вообще не имеет внешнего вида, свойство его курсора не распространяетсявниз по его дереву элементов ...

Это удивляет меня, поскольку в моем основном приложении я установил курсор на первый элемент дерева, и он, кажется, распространяется хорошо или, по крайней мере, он может появляться над дочерними элементами.

Интересно, есть ли другая причина или это поведение появляется где-нибудь еще в WPF.

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