WPF如何开发Surface Dial
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍了WPF如何开发Surface Dial,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。示例:public MainWi
千家信息网最后更新 2025年11月08日WPF如何开发Surface Dial
这篇文章主要介绍了WPF如何开发Surface Dial,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
示例:
public MainWindow() { InitializeComponent();//SetRadialControllerConfiguration();var interop = (IRadialControllerInterop)System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal .GetActivationFactory(typeof(RadialController)); Guid guid = typeof(RadialController).GetInterface("IRadialController").GUID; Window window = Window.GetWindow(this);var wih = new WindowInteropHelper(window); IntPtr hWnd = wih.Handle;// Create a reference to the RadialController.radialController = interop.CreateForWindow(hWnd, ref guid);string iconFileName = "Assets\\dial_icon_custom_item.png";string filePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, iconFileName);var getItemImageOperation = StorageFile.GetFileFromPathAsync(filePath); getItemImageOperation.Completed += new AsyncOperationCompletedHandler(AddMenuItemFromImage);// Declare input handlers for the RadialController.radialController.RotationChanged += RadialController_RotationChanged; ; } 还有个很关键的类RadialControllerInterfaces.cs
[System.Runtime.InteropServices.Guid("787cdaac-3186-476d-87e4-b9374a7b9970")] [System.Runtime.InteropServices.InterfaceType(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIInspectable)]interface IRadialControllerConfigurationInterop { RadialControllerConfiguration GetForWindow(IntPtr hwnd, [System.Runtime.InteropServices.In]ref Guid riid); } [System.Runtime.InteropServices.Guid("1B0535C9-57AD-45C1-9D79-AD5C34360513")] [System.Runtime.InteropServices.InterfaceType(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIInspectable)]interface IRadialControllerInterop { RadialController CreateForWindow(IntPtr hwnd, [System.Runtime.InteropServices.In]ref Guid riid); }这个类提供了CreateForWindow方法可以让我们创建RadialController对象,个人觉得这个接口很玄乎,上边的Guid特性(这个是叫特性吧?)是写死的,问了工程师说这个不用改,这不就很坑了,如果不是有个demo,我怎么知道怎么写,,,
作为弱鸡,这里我也有问题请教大家:
1.这些特性的作用,平时自己写代码貌似只用过【datacontract】
[System.Runtime.InteropServices.Guid("1B0535C9-57AD-45C1-9D79-AD5C34360513")][System.Runtime.InteropServices.InterfaceType(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIInspectable)] 2.MainWindow中代码
var interop = (IRadialControllerInterop)System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal .GetActivationFactory(typeof(RadialController));
总觉得阅读性这么差呢,看不懂,或许是我从未见过,对这个方法不熟?
微软工程师给我的这个Demo我发现有两个Bug(他本人也表示还没写完,是Dirty Demo),一个是SetRadialControllerConfiguration这个方法里异常,不能用,导致不能初始化Dial的菜单,每次启动应用都会往菜单里
添加一项;另一个是焦点问题,当长按dial选择了其他菜单,例如音量,再返回我们的demo,发现此时dial仍然控制的是音量
感谢你能够认真阅读完这篇文章,希望小编分享的"WPF如何开发Surface Dial"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
篇文章
方法
特性
菜单
开发
工程
工程师
问题
音量
玄乎
这不
上边
不用
两个
个人
从未
代码
价值
作用
关键
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
蓝月传奇2登录一直显示服务器满
电脑作为代理服务器
我的世界网易版服务器存档路径
业务服务器文件包选多大
网络安全宣讲稿50字
软件开发女孩子做什么
服务器管理员职职责
如何运行服务器安全
数据库原理读后感5000
数据库后台可视化
联通isp服务器链接超时
神奇宝贝服务器刷新率
学生数据库管理系统属于
软件开发问题跟踪管理
软件开发工程师怎么学习
如何查看pg数据库分区信息
服务器管理节点关机
软件开发生命周期说明与实例
tcp 服务器丢包
台服扫号数据库
福建百信服务器厂家
服务器管理员职职责
神武手游开区服务器等级
邮箱服务器备份
黄浦区管理软件开发诚信服务
量大什么服务器
无代码软件开发平台有没有
转行做汽车软件开发
网络安全知识干货
网络安全法主要目的