2016-05-03 10 views
0

私はFlipViewであるカスタムコントロールを作成しています。コントロールテンプレートには、Items.CurrentItemにバインドするContentControlがあり、次のボタンと前のボタンがあり、Items.MoveCurrentToNext()、その逆のボタンがあります。ここまでは順調ですね。ItemsControlは、-1の代わりにCurrentPosition = 0で開始します。

私の問題は、最初はItems.CurrentItemnullなので、フリップビューは空です。 Itemsコレクションの最初のアイテムを表示します。

私が現在使用している解決策は、Selectorから派生し、IsSynchronizedWithCurrentItem = trueと設定し、SelectedIndex = 0をコンストラクタに設定しています。これは機能しますが、それを行うにはより良い方法がありますか?この回避策以外のセレクタの機能は必要ありません。

this.Items.MoveCurrentToPosition(0);も機能しません。それは何もしません:/

+0

'MoveCurrentToPosition'を使用するとどうなりますか?どのようなエラーが出ますか? – jitendragarg

+0

何もしません。 –

+0

エラーもありませんか?行にブレークポイントを置き、この行が実行される前後の現在の位置を確認します。 – jitendragarg

答えて

1

OnItemsChangedメソッドをオーバーライドし、これをthis.Items.MoveCurrentToPosition(0);に入れます。今それは動作します。それ以前に動作しなかったのは、Itemsコレクションが空だったためです。

編集:@ gitendra gargのコメントで説明したように、代わりにLoadedイベントを使用する必要があります。

+1

それはすぐに動作するように知っておきたい。ちょうど1つだけ起こると思われる場合、これを処理するために、Loadedイベントを使用する必要があります。 ItemsChangedイベントは、コレクション全体で値が変更されたときに発生します(新しいアイテムの追加、アイテムの削除や名前の変更など)。 – jitendragarg

+0

@jitendragarg、ありがとう:) –

関連する問題