前面效果中分享了彩色马蹄图的效果和范围内拖拽;这不大假期的时间反正没啥事就在家撸代码;今天又是LisBox实现的效果,看最终效果:
1、刚开始一朋友说用DataGrid来实现.首先把行对象转换成列对象,至于控制列的话,就后台重新赋值对象来控制前台.我是觉得太费劲直接放弃了;还是首选最爱;左侧是所有的行头,右侧是带有列头的集合,左侧的Visibility通过绑定集合对象和转换器来控制:
<WrapPanel VerticalAlignment="Center" HorizontalAlignment="Center"><ListBox ItemsSource="{Binding RowHeaders}"VerticalContentAlignment="Center" Margin="0,40,0,0"ItemsPanel="{StaticResource MyPanel}" ItemTemplate="{StaticResource ColorDataTemplate}"ItemContainerStyle="{StaticResource ListBoxItemStyle}"Visibility="{Binding SummaryModules.Count,Converter={StaticResource SummaryModulesCountToVisibilityConverter}}"/><ListBox Name="DataListBox" HorizontalAlignment="Left" ItemsSource="{Binding SummaryModules}"ItemsPanel="{StaticResource SummaryModulesPanel}" ItemTemplate="{StaticResource SummaryModulesDataTemplate}"ItemContainerStyle="{StaticResource SummaryModulesListBoxItemStyle}"/>
</WrapPanel>
2、左侧的BorderThickness通过多值绑定和转换器控制:
<Setter Property="BorderThickness"><Setter.Value><MultiBinding Converter="{StaticResource RowHeadersIndexToBorderThicknessConverter}" ConverterParameter="true"><Binding/><Binding RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1}" Path="ItemsSource"/></MultiBinding></Setter.Value>
</Setter>
3、右侧就是比较low的方式:
<DataTemplate x:Key="SummaryModulesDataTemplate"><WrapPanel Orientation="Vertical" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"><Border><TextBlock Text="{Binding ModuleType,Converter={StaticResource ModuleTypeEnumToShowNameConverter}}"/></Border><Border><TextBlock Text="{Binding Red}"/></Border>......</WrapPanel>
</DataTemplate>
关于呈现无非就是集合的修改,最终简单的效果先这样吧;以后有时间的话,可以再去摸索一下更复杂的效果;编程不息、Bug不止、无Bug、无生活;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下!