我们需要创建一个自定义的FlipView
。从下面所示的代码开始:
public class CustomFlipView : FlipView
{
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
SelectionChanged += (s,e) => UpdateNavigationButtonsVisibility();
Button prev = GetTemplateChild("MyPreviousButtonHorizontal") as Button;
prev.Click += OnBack;
prev.Visibility = Visibility.Collapsed;
Button next = GetTemplateChild("MyNextButtonHorizontal") as Button;
next.Click += OnNext;
next.Visibility = Visibility.Collapsed;
}
private void OnBack(object sender, RoutedEventArgs e)
{
if (Items.Any())
{
SelectedIndex--;
UpdateNavigationButtonsVisibility();
}
}
private void OnNext(object sender, RoutedEventArgs e)
{
if (Items.Any())
{
SelectedIndex++;
UpdateNavigationButtonsVisibility();
}
}
private void UpdateNavigationButtonsVisibility()
{
Button prev = GetTemplateChild("MyPreviousButtonHorizontal") as Button;
Button next = GetTemplateChild("MyNextButtonHorizontal") as Button;
if (SelectedIndex < 1)
prev.Visibility = Visibility.Collapsed;
if (SelectedIndex == Items.Count - 1)
next.Visibility = Visibility.Collapsed;
if (Items.Count > 1 && SelectedIndex != Items.Count - 1)
next.Visibility = Visibility.Visible;
if (Items.Count > 1 && SelectedIndex > 0)
prev.Visibility = Visibility.Visible;
}
}
在打开需要插入的 XAML 文件之前构建项目CustomFlipView
。然后将控件添加到您的 XAML;您可能需要添加名称空间声明,具体取决于您创建的位置CustomFlipView
class.
默认的问题FlipView
滚动按钮只有在指向它时才会显示出来,这是我们在触摸设备上所没有的。为了使事情变得更复杂,内部代码在加载时将模板的按钮不透明度设置为零,因此我们需要更改两个导航按钮的名称因此内部代码会优雅地降级并允许它们始终可见。然后,我们添加代码来处理单击导航按钮时的情况,这样我们就不会在第一页上显示上一个按钮,也不会在最后一页上显示下一个按钮。
要覆盖导航按钮的名称,我们需要编辑控件的模板。最快的方法是打开文件大纲窗格,右键单击您的自定义翻转视图 → 编辑模板 → 编辑副本.
XAML 中会出现很多代码,但要查找的重要部分如下所示:
<Button x:Name="MyPreviousButtonHorizontal" HorizontalAlignment="Left" Height="70" IsTabStop="False" Template="{StaticResource HorizontalPreviousTemplate}" UseSystemFocusVisuals="False" VerticalAlignment="Center" Width="40"/>
<Button x:Name="MyNextButtonHorizontal" HorizontalAlignment="Right" Height="70" IsTabStop="False" Template="{StaticResource HorizontalNextTemplate}" UseSystemFocusVisuals="False" VerticalAlignment="Center" Width="40"/>
注意我重命名了x:Name
属性来自上一个按钮水平 to 我的上一个按钮水平 and 下一个按钮水平 to 我的下一个按钮水平与我们之前编写的隐藏代码相匹配。
Now the CustomFlipView
使用触摸和笔(而不仅仅是鼠标)时应显示导航箭头。