早一段时间又一次出差青海省西宁市;回来又是总结又是各种琐事,也没顾得上去分享点东西;大周末的就在家分享一下,这二天再次基于ListBox实现的合并单元格的效果:
1、ListBox嵌套ListBox的前台布局:
<ListBox ItemsSource="{Binding LCPListData}" x:Name="ManufacturerListBox"Style="{StaticResource calcyListbox}"><ListBox.ItemTemplate><DataTemplate><Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width="4*"/></Grid.ColumnDefinitions><TextBlock Text="{Binding Address}" FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center"/><Border BorderThickness="0,0,0,1" BorderBrush="Black"/><ListBox Grid.Column="1" ItemsSource="{Binding Items}" Style="{StaticResource ItemsListBoxStyle}"/></Grid></DataTemplate></ListBox.ItemTemplate>
</ListBox>
2、结果在鼠标滚轮时不触发外层的滑动效果:
3、方法①:设置IsHitTestVisible,结果内部控件没办法选择:
<ListBox Grid.Column="1" AlternationCount="2"ItemsSource="{Binding Items}" IsHitTestVisible="False"Style="{StaticResource ItemsListBoxStyle}"/>
4、方法②通过事件的方式处理:
<ListBox Grid.Column="1" AlternationCount="2"PreviewMouseWheel="ManufacturerListBox_PreviewMouseWheel"ItemsSource="{Binding Items}" Style="{StaticResource ItemsListBoxStyle}"/>
5、后台事件逻辑:
var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
eventArg.RoutedEvent = UIElement.MouseWheelEvent;
eventArg.Source = sender;
var parent = ((Control) sender).Parent as UIElement;
parent.RaiseEvent(eventArg);
6、方法③很明显前三种都不满足需求;最后突然发现:截然内部滑动让他失效,换句话说就是不要他了;结果很简单的方式:
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="0" SnapsToDevicePixels="true"><!--3、方法:比较机智的方法既然里面的ScrollViewer会影响外层滑轮事件,那咱就直接把他干掉得了--><!--<ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">--><ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" IsHitTestVisible="True"/><!--</ScrollViewer>-->
</Border>
最终简单的效果先这样吧;以后有时间的话,可以再去摸索一下更复杂的效果;编程不息、Bug不止、无Bug、无生活;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下!