原文:
自定義Behavior 實作Listbox自動滾動到選中項blend為我們提供友善的behavior來擴充我們的控件,寫好之後就可以在blend中友善的使用了。
下面是自定義的behavior來實作Listbox自動滾動到選中項
其中this.AssociatedObject為使用該行為的控件。
其中
OnAttached()和OnDetaching()為必須重寫的内容,通常可以在OnAttched()裡面添加事件處理程式,來達到拓展的目的。
public class AutoScrollBehavior : Behavior<ListBox>
{
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.SelectionChanged += new SelectionChangedEventHandler(AssociatedObject_SelectionChanged);
}
void AssociatedObject_SelectionChanged(object sender, SelectionChangedEventArgs e)
if (sender is ListBox)
{
ListBox listbox = (sender as ListBox);
if (listbox.SelectedItem != null)
{
listbox.Dispatcher.BeginInvoke((Action)delegate
{
listbox.UpdateLayout();
listbox.ScrollIntoView(listbox.SelectedItem);
});
}
}
protected override void OnDetaching()
base.OnDetaching();
this.AssociatedObject.SelectionChanged -=
new SelectionChangedEventHandler(AssociatedObject_SelectionChanged);
}
歡迎探讨WPF技術問題 QQ:281092346