我希望 FlipView 在计时器上旋转其项目。计时器很简单,但是有没有办法让 FlipView 在代码中显示下一个项目(然后循环)?
这个问题的答案为什么 FlipView 忽略 SelectedItem似乎不起作用。
我希望 FlipView 在计时器上旋转其项目。计时器很简单,但是有没有办法让 FlipView 在代码中显示下一个项目(然后循环)?
这个问题的答案为什么 FlipView 忽略 SelectedItem似乎不起作用。
只需跳过 SelectedItem 属性并改用 SelectedIndex 即可。将其设置为 0 开始,然后将其增加一,直到达到等于列表中项目数减一的值,然后返回零。我刚刚对此进行了测试,它适用于在 XAML 中声明或绑定到 ItemsSource 属性的翻转视图项目。
如果您通知 UI 属性已更改,它将起作用。您的 ViewModel 必须实现 INotifyPropertyChanged 并且该属性需要触发 PropertyChanged 事件
public class ViewModel : INotifyPropertyChanged
{
private object _selectedItem;
public object SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
OnPropertyChanged("SelectedItem");
}
}
}
您还可以使用示例应用程序附带的 BindableBase 类
public class ViewModel : BindableBase
{
private object _selectedItem;
public object SelectedItem
{
get { return this._selectedItem; }
set { this.SetProperty(ref this._selectedItem, value); }
}
}
这在某些情况下可能会有所帮助
flipView.SelectedIndex = -1;
flipView.SelectedIndex = desiredIndex;
或者
flipView.SelectedItem = null;
flipView.SelectedItem = flipViewItem;
出于某种原因,我需要为这些 FlipView 设置 SelectedIndex 和 SelectedItem。奇怪的行为:/(也许这是从 RP 到 RTM 的变化——我在 RTM 上。)
在 Windows 10 VS2017 中对于以下 XML 代码:
<FlipView Grid.Row="1" x:Name="fvMainControls">
<FlipViewItem>
<CheckBox Content="My Overlay" Height="21" Canvas.Left="191" Canvas.Top="164" Width="131"/>
</FlipViewItem>
<FlipViewItem>
<Rectangle HorizontalAlignment="Left" Height="387" Margin="54,140,0,0" Stroke="Black" VerticalAlignment="Top" Width="206" Fill="#FF6A1717" FocusVisualPrimaryBrush="#FFA46767"/>
</FlipViewItem>
</FlipView>
这有效:
fvMainControls.SelectedIndex = 0
fvMainControls.SelectedIndex = 1
和
fvMainControls.SelectedItem = fvMainControls.Items(0)
fvMainControls.SelectedIndex = fvMainControls.Items(1)
作品。拉维