问题场景
使用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);
}
最终效果如下: