我正在使用CodePlex的WPF DataGrid,我需要让Virtualization与分组一起使用.
这个问题是关于主题并指向MSDN示例,但它仅涵盖带有简单(即单个"列")DataTemplates的ListControls.
分组和虚拟化似乎是网格的一个非常常见的用例.是否有标准/推荐/简单的方法来实现这一目标?
我有一套C#(v2)应用程序,我在Win7(以及较小程度上的Vista)中使用注册表虚拟化.
我有一个共享的注册表配置区域,我的应用程序需要在HKLM\Software\Company中访问...在Vista之前,所有内容都只是根据需要写入并从该位置读取.
代码适当地检测到写入该注册表项的失败并且会适当地回退(写入HKCU而不是通知用户他们应用的设置只会影响当前用户).
在Vista中,注册表虚拟化破坏了所有这一切,因为我们用于HKLM写入的访问检查将"成功"静默并虚拟化为HKCR\VirtualStore\Machine ...而不是.在这种情况下,用户会认为他们已经保存了机器范围的配置,而只是写入了虚拟商店.
遗憾的是,即使尝试枚举HKLM reg键的权限,也会显式返回指示用户是否访问的结果.
当我们添加Vista支持时,我们使用的解决方法是执行对HKLM的探测写入...然后在HKCR\VirtualStore\Machine ...中检查相同的值并注意如果找到该值则发生虚拟化.
Win7似乎已经打破了这个(再次),因为针对显式虚拟位置(HKCR)的查询现在显示来自HKLM位置的合并结果,即使写入未被虚拟化.
有没有人有任何解决这个问题的建议?
约束: - 我需要一个无需提升的解决方案(当我没有管理员级别权限时,我将回退到HKCU中的每用户配置,但我需要能够可靠地检测到这种情况).
它需要使用v2 C#应用程序(我看到的C++代码的一个选项是嵌入一个禁用.exe虚拟化的清单,但我无法在C#V2中执行此操作,请参阅Windows中的禁用文件夹虚拟化) .
它需要在没有"安装程序"的情况下工作(这排除了在注册表项上禁用虚拟化的能力,我们需要REG FLAGS ...命令).
我目前正在尝试构建脚本,因为我在源代码控制下有一个ASP.net Web部件,我的构建脚本最后应该这样做:
我从未尝试过自动化虚拟机,但我看到VMWare和Virtual Server都提供自动化设施.虽然我不能使用虚拟服务器(Windows XP Home :-(),但Virtual PC可以工作.
有没有人在自动化方面有VMWare Server或Virtual PC 2007 SP1的经验?
哪一个更适合(我运行Windows,因此VMWare的平台独立性不计算)并且更容易自动化?
我想创建一个在本地运行其他人代码的Web服务...当然,我想限制他们对某些"sandbox"目录的代码访问,并且他们将无法连接到我的服务器的其他部分(DB,main网络服务器等)
什么是最好的方法呢?
运行VMware/Virtualbox:
(+)我猜它就像它得到的那样安全......即使有人设法"破解"......他们只会破解客人机器
(+)可以限制进程使用的cpu和内存
(+)易于设置..只需创建VM
( - )更难将沙箱目录从主机"连接"到guest虚拟机
( - )浪费额外的内存和CPU来管理VM
运行弱势用户:
(+)不会浪费额外的资源
(+)sandbox目录只是一个普通目录
(?)不能限制CPU和内存?
(?)不知道它是否足够安全......
还有其他方法吗?
运行Fedora Core 8的服务器,用Java和C++编写的"其他"代码
这被标记为一个主观问题,我希望我不会得到太多的选票.
LV似乎提供了一个很好的图形替代传统的基于文本的编程.据我所知,它不是一种公正的虚拟化/数据采集编程语言.尽管如此,似乎这种范式与其创作者的名字挂钩.
我的问题出现了,因为它似乎并没有被广泛用于多用途应用程序.我不是任何类型的LV专家,我更像是一个学习者.我还是习惯了LV.
如果有人回答,我可以燃烧.
在工作中我使用Windows XP Pro机器进行开发,在家里我使用Macbook Pro.我正在考虑使用VMWare Fusion(在Mac上)将我的开发环境转移到虚拟机.我的问题是,我可以使用我的Windows计算机在工作时打开在我的Mac上创建的虚拟机映像吗?
例如,使用VMWare Fusion在Mac上创建虚拟服务器,将其克隆到USB记忆棒,将其投入使用并在工作中使用,将其保存回USB记忆棒,回家并将其复制回mac并继续工作.
我试图了解我们的网页在普通客户的计算机上的表现.我们尚未确定此配置,但它可能比我们的开发人员和测试人员的速度慢.
我已经看到类似问题的答案,这些问题表明限制带宽并使用内存有限的VM,但是我是否还需要减慢CPU的速度?我的印象是,即使在VM中,CPU也会以相当接近全速的速度运行.是否有允许您限制CPU周期的虚拟机平台?我看到了一个像Folding @ Home这样的东西的建议,但我欢迎其他建议来限制CPU的速度.
我已经看到了这个问题:如何减慢浏览器的速度,以及其他谈论限制带宽的问题.
编辑:我想我需要关注VM可用的核心/处理器数量.大多数VM平台是否允许您选择限制此操作?
Azure和EC2针对运行的服务器进行了优化.很多很多服务器.这两个平台都试图为您管理大量的事情 - 在Azure的情况下,它甚至想要管理目标操作系统.
但是,出于不同的原因,我想使用这样的服务:测试.
我需要支持大量的操作系统.我的测试实际上并没有花那么长时间,但在每个平台上运行它们都很耗时.我本来打算使用云服务,认为这些机器运行的时间不会超过一个小时,而且不会花费太多.
问题是主要的云服务不会运行Windows的客户端版本 - 仅限Windows Server.
是否有云服务可以让我运行从Windows 2000 SP4开始到目前为止发布的Windows的每个客户端和服务器版本以及每个服务包级别?
我知道BEA正在研究LiquidVM,它不需要底层操作系统,但想知道开源社区中是否有人正在开发类似的东西.
理想情况下,我想找到一个实现,其中VM由OS引导加载程序直接加载.
首先,免责声明,我正在使用.net 3.5的virtualizingstackpanel.如果您在将来的版本中有不同的行为,请告诉我.使用listviews设置测试用例相对简单,您可以对其进行测试.
我在virtualizingstackpanel中有一个itemcontainer样式,它将属性IsSelected绑定到viewmodel.
当我在视图模型中选择一个未选择的项目在屏幕外,然后滚动到该项目时,datacontext(viewmode)和实际listviewitem都将IsSelected属性设置为true(预期行为).触发器正确应用于listviewitem突出显示它.
但是,当我取消选择不在视图中的项目的datacontext然后向下滚动直到该项目在视图中时,在到达项目并创建它时,项目的datacontext现在具有IsSelected = true并且listviewitem的IsSelected属性也为true ,因此listviewitem以触发器中的选择矩形结束(不正确的行为).
这几乎就像ListViewItem的属性在创建项目时都被恢复一样(这对我来说很有意义,但是之后他们应该将datacontext的值绑定到项目之后).
但这似乎并没有发生.此外,未能取消选择该项目并向后滚动以找到它.如果我然后选择/取消它,绑定对该项目没有影响.
我在视频模型中选择一个在屏幕外的项目而不是在我取消选择屏幕外的项目时,看不出它为什么会起作用的逻辑原因.在这两种情况下,新创建的项目都需要反弹到viewmodel的当前值.但是,一个有效,另一个没有.
任何帮助或想法将不胜感激.
编辑:好的,所以我只是不能使用回收模式和绑定似乎.谢谢devhedgehog.会给你赏金,但你需要一个答案.我发誓我之前尝试过,但也许我之前没有处理绑定列表视图中的点击事件,所以我打破了物理选择或其他东西的绑定.我确实记得在某一点尝试过这两种模式,但可能还有其他干扰,所以它不起作用.无论如何它现在有效.
既然你提到了它,我想最好避免保留不必要的代码并继承virtualizingstackpanel而不是虚拟化面板.但我希望能够设置水平滚动范围,这需要我重新实现Iscrollinfo.但是,我无法让virtualizingstackpanel与iscrollinfo进行良好的交互
<ListView
x:Name="TestLV"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Background="Green"
ItemsSource="{Binding Path=AddedItems, Mode=OneWay}"
SnapsToDevicePixels="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
VirtualizingStackPanel.IsVirtualizing="true"
ScrollViewer.IsDeferredScrollingEnabled="False"
Grid.Column ="4"
MouseDown="TestLV_MouseDown"
>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=OneWay}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Grid
x:Name="SignalGrid"
Background="Transparent"
>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border
Name="Bd"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="true">
<ContentPresenter
x:Name="PART_Header"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
/>
</Border>
<ItemsPresenter
x:Name="ItemsHost"
Grid.Row="1"
Grid.Column="0"
/>
</Grid> …Run Code Online (Sandbox Code Playgroud)