你听我说-HandyControl手动控制CoverFlow翻页

简介: 你听我说-HandyControl手动控制CoverFlow翻页

6fca9172dd7708ae894ca0b582736fef.png

问题场景

使用HandyControl中[CoverFlow封面流图]https://handyorg.gitee.io/handycontrol/extend_controls/coverFlow/,自动轮播能够点击翻转,手动控制翻转需要如何去处理,请听笔者一步步讲,原始效果如下:

xaml页面:

<Grid>
    <hc:CoverFlow x:Name="CoverFlowMain" Margin="32" Width="500" Height="300"/>
</Grid>

xxx.cs代码:

public MainWindow()
{
    InitializeComponent();
    Init();
}
private void Init()
{
    CoverFlowMain.AddRange(new[]
    {
        new Uri("pack://application:,,,/YonLink.Tool.Authorize;Component/Resources/Imgs/1.png"),
        new Uri("pack://application:,,,/YonLink.Tool.Authorize;Component/Resources/Imgs/2.png"),
        new Uri("pack://application:,,,/YonLink.Tool.Authorize;Component/Resources/Imgs/3.png"),
        new Uri("pack://application:,,,/YonLink.Tool.Authorize;Component/Resources/Imgs/4.png"),
        new Uri("pack://application:,,,/YonLink.Tool.Authorize;Component/Resources/Imgs/5.png"),
        new Uri("pack://application:,,,/YonLink.Tool.Authorize;Component/Resources/Imgs/6.png")
    });
}

解决方案

通过查看Coverflow源码发现,控件本身,并有提供可以直接使用的函数或者方法去手动控制翻转,如果需要手动控制的话,需要直接使用控件的附加属性,进行人为给依赖属性PageIndexProperty设置值,以下为对应的Coverflow源码:

//
// 摘要:
//     页码
public int PageIndex
{
    get
            {
                return (int)GetValue(PageIndexProperty);
            }
    internal set
    {
        SetValue(PageIndexProperty, value);
    }
}

xaml中添加,两个按钮,一个用于控制上一页,一个控制下一页:

<Grid>
    <hc:CoverFlow x:Name="CoverFlowMain" Margin="32" Width="500" Height="300"/>
    <UniformGrid VerticalAlignment="Bottom" Rows="1">
        <Button x:Name="btn_pre" Content="上一个" Click="btn_pre_Click"></Button>
        <Button x:Name="btn_next" Content="下一个" Click="btn_next_Click"></Button>
    </UniformGrid>
</Grid>

xxx.cs事件内容如下:

private void btn_pre_Click(object sender, RoutedEventArgs e)
{
    // 上一页
    int num = CoverFlowMain.PageIndex - 1;
    //设置对应的依赖属性`PageIndexProperty`,用于通知页面变更
    CoverFlowMain.SetValue(CoverFlow.PageIndexProperty, num);
}
private void btn_next_Click(object sender, RoutedEventArgs e)
{
    // 下一页
    int num = CoverFlowMain.PageIndex + 1;
    //设置对应的依赖属性`PageIndexProperty`,用于通知页面变更
    CoverFlowMain.SetValue(CoverFlow.PageIndexProperty, num);
}

最终效果如下:


相关文章
|
3月前
|
Web App开发 前端开发
【前端篇】前端实现滚动分屏效果
【前端篇】前端实现滚动分屏效果
134 0
|
3月前
|
XML Java Android开发
Android Studio App开发之翻页视图ViewPager的讲解及实战(附源码 包括翻页视图和翻页标签栏)
Android Studio App开发之翻页视图ViewPager的讲解及实战(附源码 包括翻页视图和翻页标签栏)
531 0
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
|
18天前
|
开发框架 前端开发 搜索推荐
在WInform开发中实现工具栏/菜单的动态呈现
在WInform开发中实现工具栏/菜单的动态呈现
|
1月前
Flutter-自定义折叠流布局实现
Flutter-自定义折叠流布局实现
28 0
|
3月前
|
小程序
微信小程序scroll-view横向滚动和纵向滚动实现(亲测管用)
微信小程序scroll-view横向滚动和纵向滚动实现(亲测管用)
你听我说-HandyControl调整样式色系
你听我说-HandyControl调整样式色系
233 0
LabVIEW显示控件中内容过长设置自动滚动条
本篇博文分享程序设计时一个细节小技巧,在LabVIEW显示控件中内容过长设置自动滚动条。
|
iOS开发
iOS开发 - 滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)
iOS开发 - 滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)
190 0
iOS开发 - 滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)
ViewPager如何区分自动切换和手势滑动切换
ViewPager是一个很常见的组件,不仅支持收拾滑动切换页面,我们还可以通过`viewPager.setCurrentItem(index)`来切换到指定的页面,那么他们如何区分呢? 我们知道ViewPager可以添加`ViewPager.OnPageChangeListener`监听器,可以监听切换的状态。通过观察`ViewPager.OnPageChangeListener#onPageScrollStateChanged(int state)`方法中state的输出,发现了手势切换和自动切换的规律。