У вас есть два основных варианта:
this.Cursor = Cursors.None;
и нарисуйте свой собственный курсор, используя любую технику, которая вам нравится. Затем обновите положение и внешний вид вашего курсора, отвечая на события мыши. Вот два примера: http://www.xamlog.com/2006/07/17/creating-a-custom-cursor/ http://www.hanselman.com/blog /DeveloperDesigner.aspx Если вы решите загрузить из файла, отметьте что вам нужен абсолютный путь к файловой системе для использования конструктора Cursor(string fileName)
. А именно, относительный путь или URI пакета не будут работать. Если вам нужно загрузить курсор из относительного пути или из ресурса, собранного вместе с вашей сборкой, вам нужно будет получить поток из файла и передайте его конструктору Cursor(Stream cursorStream)
.
С другой стороны, указание курсора как относительного пути при загрузке с помощью атрибута XAML делает работу , факт, который вы могли бы использовать для загрузки курсора на скрытый элемент управления, а затем скопируйте ссылку для использования на другом элементе управления. Я не пробовал, но он должен работать.
Поведение, которое вы видите, является результатом двух фактов:
с использованием executeWithFork
добавляет немного дополнительной задержки для переключения потоков
ConcurrentSubject.publish
(в отличие от replay
, например). Если вы откроете документы для PublishSubject
, то увидите, что
A
blockquote>PublishSubject
отправляет подписчику только те элементы, которые испускаются Источник после времени подписки.Другими словами, у вас есть условие состязания между основным потоком, который публикует
"one"
и"two"
, и разветвленным потоком, который должен подписаться наinput
, чтобы получить данные. Результаты зависят от того, какой поток выиграет гонку: все данные, опубликованные до подписки, будут потеряны. Одно мое оборудование я почти всегда вижу"two"
и очень редко даже вижу"one"
, ваши результаты могут отличаться.Самый простой способ проверить это - добавить
Thread.sleep(100)
перед первымinput.onNext
, и вы должны увидеть оба события, напечатанные каждый раз. Вы также можете попытаться выдвинуть больше событий, чем просто 2, чтобы увидеть, что не все потеряно.