2012-01-28 11 views
0

ScrollViewerでRequestBringIntoViewイベントを処理するコンポーネントを見つける方法はありますか?
2つのScrollBarパーツには表示されません(直接ではありません)。任意のポインタのための
おかげで...SL 4:ScrollViewer - RequestBringIntoView

UPDATE:関連:私はScrollViewerののScrollContentPresenterの一部を取得することはできますか?どうやって?
おかげ -

大きな画像:
私たちは、ScrollViewerの中に含まれている大きなキャンバスを持っています。実行時に、任意の数のUserControl(「Blobs」と呼びます)がdbからキャンバスに追加されます。彼らの位置と内容はDBから来ます。ユーザは、それをクリックすることによってブロブを「選択」することができ、その外観が選択されたことを示すように変化する。
ユーザーがスクロールバーを使用して選択したBLOBをビューから移動し、別のBLOBをクリックすると、Canvasがスクロールされ、以前に表示されなかったBLOBが再び表示されるようになります。これは、RequestBringIntoViewを呼び出すオブジェクトが原因で、ScrollViewerがそのオブジェクトを処理していると仮定しています。これは理にかなって
希望は...

しかし、より多くの情報:
は、ScrollViewerのスクロールバーのValueChangedイベントにハンドラ(sb_ValueChanged)を追加しました。 !!

OurControl.sb_ValueChanged()System.Windows.dll System.Windows.Controls.Primitives.RangeBase.OnValueChanged()System.Windows.dllシステム:ここではスクロールを沈殿させるマウスクリックからのスタックです。 Windows.Controls.Primitives.ScrollBar.OnValueChanged()System.Windows.Controls.Primitives.RangeBase.OnValuePropertyChanged() System.Windows.dll!System.Windows.DependencyObject.RaisePropertyChangeNotifications()
システム。 Windows.dll!System.Windows.DependencyObject.UpdateEffectiveValue() System.Windows.dll!System.Windows.DependencyObject.SetValueInternal() System.Windows.DependencyObject.SetValue()System.Windows.Controls.ScrollContentPresenter(System.Windows.Controls.ScrollContentPresenter) .ArrangeOverride() System.Windows.dll!System.Windows.FrameworkElement.ArrangeOverride()

私はいたずらを開始FrameworkElementで実際に...

答えて

0

申し訳ありませんが何であるかを見つけることができる場合にのみ。 WPFのように存在しないようです。便利な解決策はCheck this linkです。

更新:これは視覚的なツリーを歩かなければならない場合があり、何らかの再帰的検索が必要な場合があります。しかし、あなたがScrollViewerのas seen hereのデフォルトのテンプレートを使用していると仮定すると、あなたが直接このようなものでScrollContentPresenterを求めることができます:非常に興味深いリンクのための

var BorderChild = VisualTreeHelper.GetChild(MyScrollViewer, 0); 
var GridChild = VisualTreeHelper.GetChild(BorderChild, 0); 
var ScrollContentPresenterChild = VisualTreeHelper.GetChild(GridChild, 0); 
+0

感謝を。残念ながら、scrollviewerは予期せずスクロールしていますので、どのオブジェクトがトリガーしているのかを調べるためにRequestBringIntoViewイベントを処理します。 – Number8

+0

Ohh ...あなたはすでにRequestBringIntoViewの働きをしていますか? – NestorArturo

+0

私たちはRequestBringIntoViewについて明示的に何もしていません。私たちが見ている、解決しようとしている問題の物語については、更新されたOPを参照してください。返信をありがとう。 – Number8

関連する問題