2

我希望 FlipView 在计时器上旋转其项目。计时器很简单,但是有没有办法让 FlipView 在代码中显示下一个项目(然后循环)?

这个问题的答案为什么 FlipView 忽略 SelectedItem似乎不起作用。

4

5 回答 5

2

只需跳过 SelectedItem 属性并改用 SelectedIndex 即可。将其设置为 0 开始,然后将其增加一,直到达到等于列表中项目数减一的值,然后返回零。我刚刚对此进行了测试,它适用于在 XAML 中声明或绑定到 ItemsSource 属性的翻转视图项目。

于 2012-08-23T13:49:14.027 回答
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); }
    }
}
于 2012-08-23T13:55:40.447 回答
2

这在某些情况下可能会有所帮助

flipView.SelectedIndex = -1;
flipView.SelectedIndex = desiredIndex;

或者

flipView.SelectedItem = null;
flipView.SelectedItem = flipViewItem;
于 2014-06-08T08:33:39.047 回答
0

出于某种原因,我需要为这些 FlipView 设置 SelectedIndex 和 SelectedItem。奇怪的行为:/(也许这是从 RP 到 RTM 的变化——我在 RTM 上。)

于 2012-08-24T12:57:06.943 回答
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)

作品。拉维

于 2017-04-12T13:31:51.787 回答