WPF 自定义滑动ScrollViewer
自定义滑动滚动条
预期目标:横向滚动条,可以左右滑动,用鼠标按住(触摸)然后释放可以实现快速滑动。
我们有几种方案:
1、ScrollViewer,修改其中的横向滚动条,将其中的背景设置为透明。
但是,存在的问题是,没有快速滑动的效果
2、ListBox,修改Panel为WrapPanel,或者直接将内容作为ItemSource填充进去。
这个能实现多个子元素切换的效果,但是针对单个或者一个区域的内容,就有点大材小用了。
3、用DevExpress中的LayoutControl、ScrollBox控件--经尝试后,很不错

1、添加LayoutControl控件或者ScrollBox。如果没有安装Dev控件,请自行下载 Dev下载地址

2、修改ScrollBox中的横向滚动条模板,设置属性
<dxlc:ScrollBox x:Name="MyScrollBox" HorizontalScrollBarStyle="{StaticResource ScrollBarStyle1}" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal">
<!--放置内容-->
</StackPanel>
</dxlc:ScrollBox>
样式:
<Style x:Key="ScrollBarStyle1" TargetType="{x:Type ScrollBar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ScrollBar}">
<Grid Height="0"></Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
3、往ScrollBox中添加内容,这里我们的滑动效果已经做好了。
案例:
<dxlc:ScrollBox x:Name="MyScrollBox" HorizontalScrollBarStyle="{StaticResource ScrollBarStyle1}" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal">
<!--放置内容-->
<TextBlock Text="1" Width="100" Height="200" Background="Red"></TextBlock>
<TextBlock Text="2" Width="100" Height="200" Background="CornflowerBlue"></TextBlock>
<TextBlock Text="3" Width="100" Height="200" Background="Brown"></TextBlock>
<TextBlock Text="4" Width="100" Height="200" Background="Aqua"></TextBlock>
<TextBlock Text="5" Width="100" Height="200" Background="DarkCyan"></TextBlock>
<TextBlock Text="6" Width="100" Height="200" Background="Red"></TextBlock>
<TextBlock Text="7" Width="100" Height="200" Background="Salmon"></TextBlock>
<TextBlock Text="8" Width="100" Height="200" Background="Silver"></TextBlock>
<TextBlock Text="2" Width="100" Height="200" Background="CornflowerBlue"></TextBlock>
<TextBlock Text="3" Width="100" Height="200" Background="Brown"></TextBlock>
<TextBlock Text="4" Width="100" Height="200" Background="Aqua"></TextBlock>
<TextBlock Text="5" Width="100" Height="200" Background="DarkCyan"></TextBlock>
</StackPanel>
</dxlc:ScrollBox>
4、如果想要左右细微的调节滑动,我们可以另外添加俩个按钮去点击滑动
<Button x:Name="BtnLeft" Height="28" Click="BtnLeft_OnClick" Background="Transparent" Content="向左滑" HorizontalAlignment="Left">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<Path Stroke="DodgerBlue" StrokeThickness="5" Data="M10,14 25,0"></Path>
<Path Stroke="DodgerBlue" StrokeThickness="5" Data="M10,11 25,25"></Path>
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
<Button x:Name="BtnRight" Height="28" Click="BtnRight_OnClick" Background="Transparent" Content="向右滑" HorizontalAlignment="Right">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<Path Stroke="DodgerBlue" StrokeThickness="5" Data="M15,14 0,0"></Path>
<Path Stroke="DodgerBlue" StrokeThickness="5" Data="M15,11 0,25"></Path>
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
后台对应的事件处理:
private void BtnLeft_OnClick(object sender, RoutedEventArgs e)
{
MyScrollBox.HorizontalOffset += ;
}
private void BtnRight_OnClick(object sender, RoutedEventArgs e)
{
MyScrollBox.HorizontalOffset -= ;
}
GitHub下载地址:https://github.com/Kybs0/ScrollBoxStyle
WPF 自定义滑动ScrollViewer的更多相关文章
- WPF 自定义BarChartControl(可左右滑动的柱状图)
自定义可左右滑动.拖拽滑动的平面柱状图 在做这种样式控件之前,可先浏览我之前预研的控件: A.自定义左右滑动ScrollViewer(可拖动滑动) B.自定义Bar柱状图 OK,现在说下控件具体设计过 ...
- WPF 自定义BarChartControl(可左右滑动的柱状图)(转)
自定义可左右滑动.拖拽滑动的平面柱状图 在做这种样式控件之前,可先浏览我之前预研的控件: A.自定义左右滑动ScrollViewer(可拖动滑动) B.自定义Bar柱状图 OK,现在说下控件具体设计过 ...
- WPF自定义TextBox及ScrollViewer
原文:WPF自定义TextBox及ScrollViewer 寒假过完,在家真心什么都做不了,可能年龄大了,再想以前那样能专心坐下来已经不行了.回来第一件事就是改了项目的一个bug,最近又新增了一个新的 ...
- WPF 自定义ComboBox样式,自定义多选控件
原文:WPF 自定义ComboBox样式,自定义多选控件 一.ComboBox基本样式 ComboBox有两种状态,可编辑和不可编辑状态.通过设置IsEditable属性可以切换控件状态. 先看基本样 ...
- WPF 自定义MenuItem样式
原文:WPF 自定义MenuItem样式 一.前言 默认的MenuItem样式比较普通,这次自定义MenuItem的样式也只是对MenuItem的颜色风格进行变化.需要其他功能的变化,大家可以根据样式 ...
- WPF 自定义 MessageBox (相对完善版 v1.0.0.6)
基于WPF的自定义 MessageBox. 众所周知WPF界面美观.大多数WPF元素都可以简单的修改其样式,从而达到程序的风格统一.可是当你不得不弹出一个消息框通知用户消息时(虽然很不建议在程序中频繁 ...
- WPF 自定义ScrollViwer
ScrollViewer自定义样式 ScrollViewer在各种列表.集合控件中广泛使用的基础组建,先看看效果图: 如上图,ScrollViewer简单来说分两部分,一个横向的滚动条,一个垂直滚动条 ...
- WPF自定义选择年月控件详解
本文实例为大家分享了WPF自定义选择年月控件的具体代码,供大家参考,具体内容如下 封装了一个选择年月的控件,XAML代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- WPF 自定义的图表(适用大量数据绘制)下
原文:WPF 自定义的图表(适用大量数据绘制)下 上一篇文章中讲了WPF中自定义绘制大量数据的图标,思路是先将其绘制在内存,然后一次性加载到界面,在后续的调试过程中,发现当数据量到达10W时,移动鼠标 ...
随机推荐
- [原创]关于mybatis中一级缓存和二级缓存的简单介绍
关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...
- ContentProvider域名替换小工具
开发项目域名想怎么换就怎么换,就是这么任性! 这是一个很有意思的小工具! 这是一个方便开发人员和测试人员的小工具!! 吐槽: 一直在做Android开发,一直总有一个问题存在:做自己公司的apk开发时 ...
- 详细解说 STL 排序(Sort)
0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算 ...
- 从零开始编写自己的C#框架(23)——上传组件使用说明
文章导航 1.前言 2.上传组件功能说明 3.数据库结构 4.上传配置管理 5.上传组件所使用到的类 6.上传组件调用方法 7.效果演示 8.小结 1.前言 本系列所使用的是上传组件是大神July开发 ...
- 在 Windows Phone 中,为 Grid 添加 Tilt 效果
在 Windows Phone 中,Tilt 效果是比较经典的效果,我们可以很简单的为按钮等控件添加这样的效果(使用 Windows Phone Toolkit 的Tilt 效果),但是,如果我们想要 ...
- 不懂CSS也能定制博客界面!
之前没想过定制博客界面,毕竟CSS,HTML什么的都不懂,不过看了这篇文章分分钟搞定: [详细图解]一步一步教你自定义博客园(cnblog)界面 我是基于模板BlueSky做了些改动,先看修改前后的效 ...
- UML类图几种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...
- WPF 虚拟化 VirtualizingWrapPanel 和 VirtualLizingTilePanel
一. UI 上两个扩展 public class VirtualizingWrapPanel : VirtualizingPanel, IScrollInfo { #region Fields UI ...
- flask+sqlite3+echarts2+ajax数据可视化
前提: 准备Python + Flask+Sqlite3的平台环境(windows系统) 前面一节介绍flask怎么安装了,剩下sqlite3下载后解压,然后环境变量添加解压路径就行了 附加下载地址: ...
- [转] 评 WOW技能天赋设计
本文转至:http://bbs.chinaunix.net/thread-1692302-8-1.html(只作转载, 不代表本站和博主同意文中观点或证实文中信息)再比如,传说中的面向对象本该大显神威 ...