前面效果中分享了彩色馬蹄圖的效果和范圍內拖拽;這不大假期的時間反正沒啥事就在家擼代碼;今天又是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的冷靜、編碼的激情、完成后的喜悅、挖坑的激動 、填坑的興奮;這也許就是屌絲程序員的樂趣吧;今天就到這里吧;希望自己有動力一步一步堅持下去;生命不息,代碼不止;大家抽空可以看看今天分享的效果,有好的意見和想法,可以在留言板隨意留言;我看到后會第一時間回復大家,多謝大家的一直默默的關注和支持!如果覺得不錯,那就伸出您的小手點個贊并關注一下!