Я использую этот пример для поведение автоматической прокрутки в ListBox на WP7 Mango RC с таргетингом на 7.1.
В моем Xaml:
<ListBox x:Name="StatusMessages"
Height="100"
ItemsSource="{Binding StatusMessages, Mode=TwoWay}"
DisplayMemberPath="Message"
Grid.Row="3">
<i:Interaction.Behaviors>
<behaviors:ListBoxItemAutoScrollBehavior FoundItem="{Binding FoundItem}" />
</i:Interaction.Behaviors>
</ListBox>
Поведение:
public class ListBoxItemAutoScrollBehavior : Behavior<ListBox>
{
public object FoundItem
{
get { return GetValue(FoundItemProperty); }
set { SetValue(FoundItemProperty, value); }
}
public static readonly DependencyProperty FoundItemProperty = DependencyProperty.Register("FoundItem", typeof (object), typeof (ListBoxItemAutoScrollBehavior), new PropertyMetadata(FoundItemChanged));
private static void FoundItemChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((ListBoxItemAutoScrollBehavior) d).AssociatedObject.ScrollIntoView(e.NewValue);
}
}
У меня есть точка останова, установленная в методе FoundItemChanged, и я ожидаю, что она сработает, когда я установлю FoundItem в своей ViewModel и запущу NotifyProperyChanged. Только это не работает, есть идеи, почему или что я могу делать неправильно?
Спасибо.
обновление: точки останова срабатывают для OnAttached и OnDetaching в поведении.
обновление 2: это работает в обычном приложении Silveright 4.
обновление 3: исправлено использование System.Windows.Interactivity версии 3.8.5.0.