我正在使用WPF和.NET 4.0.最近在我的一个程序中,我使用ListView和GridView切换到DataGrid.
我希望能够像在ListView中一样选择并突出显示整行.
在ListView中,当我单击最后一列的空白区域时,我仍然可以选择该行.整行都突出显示,不仅是细胞.
但是,在DataGrid中,在设置SelectionMode ="Single"和SelectionUnit ="FullRow"之后,只有当我单击其中的任何单元格而不是在最后一列的空白区域中时,才能选择该行.
如何在此处使用ListView中的突出显示行为?
我正在编写一个WIX安装程序,我有以下要求:
在安装过程中,我需要将一个绝对路径传递给我的安装程序中包含的文件(让我们称之为A)到COM组件,该组件已经存在于硬盘驱动器上并且是另一个程序的一部分.我已经编写了一个适当的自定义操作,它需要一个文件A的路径.我不想将A作为安装在Program Files文件夹中的文件包含在卸载过程中并删除.相反,我想将A只临时放在硬盘驱动器上,调用我的自定义操作,这将导致COM组件使用A的内容,然后从磁盘中删除A. 有没有简单的方法来实现这一目标?
我试图利用二进制表并在那里存储A,但是我不知道如何使用绝对路径引用A. 我知道我可以将A放在MSI文件之外,但我想在一个MSI中保留每个文件安装程序的需求.
任何帮助,将不胜感激.
我开发了一个Windows应用程序,使用DirectShow从外部设备捕获视频.图像分辨率为640x480,无压缩保存的视频尺寸非常大(每秒约27MB).
我的目标是尽可能减小这个大小,所以我正在寻找一个允许我实时压缩视频的编码器.它可以是H.264,MPEG-2或其他任何东西.它必须允许我将视频保存到磁盘,最好是我也可以通过网络实时流式传输(Wi-Fi,所以大小应该是每秒1MB左右,或更少).重大的质量损失是不可接受的.
我发现为此任务获取适当的DirectShow过滤器非常困难.可以假设客户机是相当现代的(快速双核CPU)并且可以使用CUDA/OpenCL.有一些应用程序允许使用CUDA编码视频并提供良好的性能,但是我没有找到适当的DirectShow过滤器或可用于开发一个的API.NVIDIA nvcuvenc.dll似乎有私有API,因此我无法直接使用它.我找到的任何基于CPU的编码器对我的要求都太慢了,但也许我错过了一些.
任何人都可以向我推荐一个解决方案,即可以在闭源应用程序中使用的编码器(付费或免费),无论是使用CPU/CUDA/OpenCL还是DirectCompute,都可以获得良好的性能?或者我应该使用一些外部硬件视频编码器?
最好的祝福,
madbadger
我正在使用MVVM模式开发WPF应用程序.我正在使用MVVM Light库,我也尝试使用依赖注入器(我正在考虑Ninject和Unity).
我已经阅读了很多博客文章,我对让我的课程相互沟通的"正确"方式感到很困惑.特别是,我不知道何时使用依赖注入以及何时依赖于介体模式.
让我们考虑一个例子.我有一个ViewModel,我们称之为DataViewModel,以及提供某种数据的Data类.如何在它们之间进行通信更好:
A.使用IData接口向DataViewModel注入依赖项?这样,Data就不必依赖Messenger,但如果Data发生变化,它必须提供一个事件,而ViewModel必须订阅它.
B.依靠中介模式(在MVVM Light中实现为Messenger)并在Model和ViewModel之间发送消息?这样就根本不需要使用依赖注入,因为整个通信将基于消息.
此外,我的ViewModel是否应该在其他ViewModel上注入依赖项,或者仅仅依靠Messenger更好?如果是第一个,是否有必要为每个ViewModel定义一个单独的接口?我认为为每个VM定义一个接口将是一项额外的工作,但也许值得.
我对WiX比较陌生.这是一个很棒的工具,但我仍然需要一些时间来更好地学习它.我遇到了注册和取消注册COM组件的问题.我已经为两个应用程序创建了安装程序,我们可以将它们称为A和B.两者都使用相同的COM组件.我按照建议使用了加热工具.安装A或B时,组件注册没有任何问题.
但是当我安装A和B,然后删除A(使用添加/删除程序)COM类未注册,B不能再使用它.有没有一个干净的解决方案来防止这种情况发生?我想在卸载A和B时取消注册COM.
任何帮助,将不胜感激,
最好的问候,madbadger
编辑:谢谢你的回复.我在两个安装程序中将GUID设置为相同的值,现在正在正确删除注册表项,即从系统中删除最后一个程序.
Hovewer,问题仍然存在,原因之一.我在HKEY_CLASSES_ROOT/CLSID/[相应的COM GUID]下检查了注册表.这是发生的事情:
- 我安装A并将COM的路径设置为[A/component.dll的路径]
- 我安装B并将COM路径设置为[路径到B/component.dll]
- 我删除B和COM的路径仍然是[B/component.dll的路径]
- 现在A无法通过注册来访问COM组件,因为[B/component.dll的路径]不再存在
现在我假设将COM组件放在两个应用程序的同一目录中是必须的.Windows Installer无法恢复到旧路径,还是我缺少的东西?
我想使用一个面板,其子坐标指定为面板总宽度/高度的百分比.此外,我应该能够设置坐标属性的动画,例如使按钮从10%移动到50%面板的宽度.
我做了两次尝试:
使用网格并将大小指定为星号 - 这还不够,因为默认情况下,AFAIK WPF无法为星星指定的距离属性设置动画.我发现某个地方有一个自定义类可以让我这样做,它甚至可以工作,我认为这个解决方案过于复杂,我正在寻找更简单的东西.
使用具有固定宽度和高度的Canvas并将其放入Viewbox中 - 这是一个简单的解决方案,但在调整Viewbox大小时,Canvas的整个内容也会调整大小.我希望内容具有固定的大小.
有一个简单的解决方案,还是我应该实现自己的面板(或者可能扩展现有面板之一,即Canvas)?
干杯!
wpf ×3
wix ×2
animation ×1
binary ×1
com ×1
coordinates ×1
cuda ×1
datagrid ×1
directshow ×1
encoding ×1
listview ×1
mediator ×1
mvvm-light ×1
opencl ×1
panel ×1
real-time ×1
registration ×1
resize ×1
selection ×1
uninstall ×1