0

複数の ListView を含む WPF アプリケーションを開発しています。すべてのビューにはボタンがあり、ユーザーはそれを押して、ビュー内の項目を処理する機能を開始できます。多くの場合、アイテム数は数千単位になり、処理に数分かかる場合があります。

ここで、現在処理中のアイテムを選択してスクロールし、ユーザーが処理された量を把握できるようにします。これにより、ユーザーは、エラーが発生した場合に処理が停止する原因となるアイテムを選択したときに、そのアイテムを簡単に知ることができます。

これを行うために、ListView の SelectedIndex を ScrollRow プロパティにバインドし、処理関数で設定しました。次に、SelectionChanged イベントを使用して、選択した項目までスクロールします。このイベントは、選択した項目で ScrollToView を呼び出す関数を実行します。

私のウィンドウには多くのビューが含まれているため、ビューを含むメイン ウィンドウにスクロールバーが表示されることがよくあります。問題は、ビューの行で ScrollToView を呼び出すと、ユーザーがウィンドウのさらに下にある別のビューを見たいときに、メイン ウィンドウもこのビューにスクロールすることです。

スクロール位置を直接設定することを検討しましたが、それを行う方法が見つかりませんでした。

ウィンドウ内のビューがスクロールするときにウィンドウがスクロールしないようにするにはどうすればよいですか?

4

1 に答える 1

1

リストボックスが他の千のアイテムをアニメーション化するのをユーザーが好むかどうかはわかりません。
進行状況、現在のアイテム、時間を表示する現在の処理に関する小さな情報パネルです...
しかし、しかし....私はあなたのデザインの選択に疑問を呈するためにここにいるわけではありません
:-) listView で ScrollToVerticalOffset を呼び出して、フォーカスを奪うことなくコンテンツをスクロールします。scrollViewer を見つけるには、この質問で私の答えを使用できます: ListView で開始インデックスと表示可能なアイテムの数を取得するにはどうすればよいですか
より多くの xaml/バインディング ソリューションが必要な場合は、次のようなソリューションを使用して VerticalOffset を公開できます。
http://marlongrech.wordpress.com/2009/09/14/how-to-set-wpf-scrollviewer-verticaloffset-and-horizo​​ntal-offset/

于 2012-11-16T12:07:06.460 に答える