我现在正在学习新的Java 8功能,经过4年专门在C#世界,所以lambdas对我来说是最重要的.我现在正在努力寻找C#的"OfType"方法的等价物.
我所拥有的是List myNodes,我想从中获取一个List,其中Node是一个接口,而SpecificNode正在实现它.
在C#中它会是
IList<INode> myNodes = new List<INodes>(){new SpecificNode(), new OtherNode()}
IList<SpecificNode> specificNodes = myNodes.OfType<SpecificNode>()
Run Code Online (Sandbox Code Playgroud) 我有 TreeView,其中包含不同的项目类型。项目样式是通过自定义 ItemContainerStyleSelector 属性定义的。
我的样式都共享一个基本样式,并且每种样式中只定义了特定于项目的内容。它看起来像这样:
<Style x:Key="BaseStyle" TargetType="{x:Type TreeViewItem}">
...
</Style>
<Style x:Key ="SomeSpecificStyle" TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource BaseStyle}">
<Setter Property="ContextMenu" Value="{StaticResource NodeContextMenu}"/>
...
</Style>
<Style x:Key ="SomeSpecificStyle" TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource BaseStyle}">
<Setter Property="ContextMenu" Value="{StaticResource AnotherNodeContextMenu}"/>
...
</Style>
Run Code Online (Sandbox Code Playgroud)
上下文菜单定义如下
<ContextMenu x:Key="NodeContextMenu">
<MenuItem Header="Select Views" Command="{Binding Path=OpenViewsCommand}" />
...other specific entries
<MenuItem Header="Remove" Command="{Binding Path=DocumentRemoveCommand}" />
...other entries common for all menus
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)
另一个上下文菜单还应该包含那些常见的项目,例如删除。每次命令属性等发生更改时,都需要通过复制粘贴来复制这些内容。可维护性简直就是地狱。有没有办法定义一个包含常用项目的上下文菜单,然后“派生”特定的上下文菜单?
编辑:我找到了一个带有此线程提示的解决方案:我定义一个包含常见项目的集合,并在定义菜单时使用复合集合以包含新项目和常见项目集合
<CompositeCollection x:Key="CommonItems">
<MenuItem Header="Remove" Command="{Binding Path=DocumentRemoveCommand}">
....Other common stuff
</CompositeCollection>
<ContextMenu x:Key="NodeContextMenu">
<ContextMenu.ItemsSource>
<CompositeCollection>
<MenuItem Header="Select Views" …Run Code Online (Sandbox Code Playgroud) 我将评估WPF组件的几个竞争框架,这些组件处理大量数据(100000个条目及以上).因此,我需要时间真正的表现.由于我们所有的软件都是严格的MVVM /数据绑定驱动,这就是我使用的测试环境.我需要的是找到一种方法来测量我的视图模型之间的时间设置一些值和视图的渲染结束.视觉上需要几秒钟,但我想要精确测量.
我当然可以在设置属性时启动秒表,但是如何找到渲染准备就绪?是否有事件或其他事情?
我的客户遇到一个奇怪的问题-我正在读取XML文档(实际上是InfoPath文档)XmlSerializer,进行修改,然后使用编写XML文档XmlSerializer,然后使用来添加一些处理指令XmlTextWriter。一切运行良好,并且生成的文档实际上完全符合XML,并且可以由InfoPath读取。但是,结构发生的变化是原始文档中所有空标签都以表格形式写入<A></A>,而在编写文档时,该文档变为<A/>。由于XML标准,实际上完全相同。但是,我的客户(一家大公司)显然具有一些带有hardcoded的检查/验证脚本<A></A>,但是它们失败了。他现在很沮丧,并且懒得更改脚本,并且想要这种<A></A>符号!我该如何设定XmlTextWriter 去做吧?
c# ×2
wpf ×2
contextmenu ×1
data-binding ×1
java ×1
java-8 ×1
lambda ×1
mvvm ×1
performance ×1
xaml ×1
xml ×1