MVVM, , viewModel, Mode=TwoWay... Selection ListView ( )
System.Windows.Interactivity, Behavior<T> class
public class ScrollIntoViewForListView : Behavior<ListView>
{
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.SelectionChanged += AssociatedObject_SelectionChanged;
}
void AssociatedObject_SelectionChanged(object sender,
SelectionChangedEventArgs e)
{
if (sender is ListView)
{
ListView listview = (sender as ListView);
if (listview.SelectedItem != null)
{
listview.Dispatcher.BeginInvoke(
(Action) (() =>
{
listview.UpdateLayout();
if (listview.SelectedItem !=
null)
listview.ScrollIntoView(
listview.SelectedItem);
}));
}
}
}
protected override void OnDetaching()
{
base.OnDetaching();
this.AssociatedObject.SelectionChanged -=
AssociatedObject_SelectionChanged;
}
}
XAML xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
Control DisplayMemberBinding = "{Binding Path = Setting}" /" >
, "MySelectedItem" ViewModel, , .
viewModel INotifyProperty, , xaml, viewModel View...
SelectionChanged MVVM
MVVM " SelectionCnaged", Setter of MySelectedItem, EventToCommand .
Google ColletionViewSource , , ..etc
, ...