FlipViewをタイマーでアイテムを回転させたいのですが。タイマーは簡単ですが、FlipViewに次のアイテムをコードで表示させる(そしてループさせる)方法はありますか?
この質問の答えFlipViewがSelectedItemを無視するのはなぜ機能しないようです。
FlipViewをタイマーでアイテムを回転させたいのですが。タイマーは簡単ですが、FlipViewに次のアイテムをコードで表示させる(そしてループさせる)方法はありますか?
この質問の答えFlipViewがSelectedItemを無視するのはなぜ機能しないようです。
SelectedItemプロパティをスキップし、代わりにSelectedIndexを使用してください。開始するには0に設定し、リスト内のアイテム数から1を引いた値に達するまで1ずつ増やしてから、ゼロに戻します。これをテストしたところ、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)
動作します。ラヴィ