Отображение пользовательского курсора в приложении WPF
У меня есть набор курсоров (.cur files), которые я хочу использовать с моим приложением WPF/VB. net, не изменяя курсоры в масштабах всей системы. Я предполагаю, что каким-то образом буду использовать свойство "курсор" каждого объекта WPF, но я не уверен, как использовать мои собственные курсоры.
Что я должен сделать, чтобы достичь этого?
3 ответа:
Вы пробовали использовать перегрузку пути к файлу для создания курсора?
Cursor cursor = new Cursor("<path>");
Или поток, если уж на то пошло?
Если у вас есть объект курсора, вы можете назначить его элементам управления, где он должен быть показан. (
FrameworkElement.Cursor
)
Если вы используете курсор в качестве ресурса, например, в папке курсоров в вашем проекте
Вы можете ссылаться на него в любом месте вашего XAML, например
<Window Cursor="Cursors/wait_il.cur">...
Предположим, что курсор находится в папке/ Resources / и действие сборки имеет значение Resource:
Объявить:
<TextBlock x:Key="MyCursor" Cursor="/Resources/grab.cur" />
Затем применитесь к главному окну в инициализаторе:
this.Cursor = (FindResource("MyCursor") as TextBlock).Cursor;
Хорошо, так как H. B был у меня вот класс: p
public class CustomCursor { private System.Windows.Input.Cursor _cursor = null; public System.Windows.Input.Cursor Cursor { get { if (_cursor == null) _cursor = GetCursor(); return _cursor; } } public string RelativePath { get; set; } public CustomCursor() { } public CustomCursor(string relativePath) { RelativePath = relativePath; } public System.Windows.Input.Cursor GetCursor() { if (RelativePath == null) throw new ArgumentNullException("You must set RelativePath first"); string directory = Directory.GetCurrentDirectory(); string absPath = directory + '\\' + RelativePath; if (!File.Exists(absPath)) throw new FileNotFoundException(); return new System.Windows.Input.Cursor(absPath); } }
Используйте в коде сзади Вот так:
this.Cursor = new CustomCursor("grab.cur").Cursor;
Или объявить в xaml:
<local:CustomCursor x:Key="MyCursor" RelativePath="grab.cur"/>
И ссылка такая:
this.Cursor = (FindResource("MyCursor") as CustomCursor).Cursor;