我想让FlipView在计时器上旋转其项目。计时器很简单,但有没有办法让FlipView在代码中显示下一个项目(然后循环)?
此问题Why does FlipView ignore SelectedItem中的答案似乎不起作用。
答案 0 :(得分:2)
只需跳过SelectedItem属性并使用SelectedIndex。将其设置为0以开始并将其增加1,直到达到相当于列表中项目数减1的值,然后返回到零。我刚刚对此进行了测试,它适用于在XAML中声明或绑定到ItemsSource属性的flipview项目。
答案 1 :(得分:2)
如果您通知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); }
}
}
答案 2 :(得分:2)
这在某些情况下可能会有所帮助
flipView.SelectedIndex = -1;
flipView.SelectedIndex = desiredIndex;
OR
flipView.SelectedItem = null;
flipView.SelectedItem = flipViewItem;
答案 3 :(得分:0)
出于某种原因,我需要为这些FlipViews设置SelectedIndex和SelectedItem。奇怪的行为:/(也许这是从RP到RTM的变化 - 我在RTM上。)
答案 4 :(得分:0)
在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)
的工作原理。拉维