私は WPF/MVVM アプリケーションを開発しており、ViewModel のデータにリストボックスをバインドしています。さまざまな時点で、リストボックスを特定の要素にスクロールさせるビューモデルが必要です。
カスタム コントロールを作成せずに、懸念事項の適切な分離を維持しながら、これを行うにはどうすればよいでしょうか?
私は現在VisibleIndex
、XAMLコードがビューモデルの整数にバインドする依存関係プロパティを使用して、ビューレイヤーにカスタム動作クラスを作成することで機能しています:
<ListBox x:Name="myListBox"
local:ListBoxVisibilityBehavior.VisibleIndex="{Binding VisibleIndex}">
整数が設定されると、依存関係プロパティの更新ハンドラーがトリガーされ、リストボックスに関連するインデックスまでスクロールするように指示されます。
依存関係プロパティの値がリストボックスによって変更されることはなく、値が変更されたときにのみ更新ハンドラーが呼び出されるため、これは少しハックに思えます。したがって、関連項目が確実に表示されるようにする唯一の方法は、次のようにすることです。
// view-model code
this.VisibleIndex = -1;
this.VisibleIndex = 10;
現時点で動作クラスを使用している唯一の理由は、カスタム依存関係プロパティをバインドするためです。代わりにイベントでこのようなことを行う方法はありますか?