以ViewModel的方式绑定itemselect

public class ViewModel : INotifyPropertyChanged
{
private Item _selectedItem;
public ViewModel()
{
Items
= new ObservableCollection<Item>()
{
new Item {Name = "Foo"},
new Item {Name = "Bar"}
};
foreach ( Item anItem in Items
{
anItem.PropertyChanged
+= OnItemIsSelectedChanged;
}
}
public ObservableCollection<Item> Items { get; private set; }
public Item SelectedItem
{
get { return _selectedItem; }
set { // only update if the value is difference, don't
// want to send false positives
if ( _selectedItem == value )
{
return;
}

_selectedItem
= value;
OnPropertyChanged(
"SelectedItem");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnItemIsSelectedChanged(object sender, PropertyChangedEventArgs e)
{
if ( e.PropertyName != "IsSelected" )
{
return;
}
SelectedItem
= sender as Item;
}
private void OnPropertyChanged(string propertyName)
{
if ( PropertyChanged != null )
{
PropertyChanged(
this, new PropertyChangedEventArgs(propertyName));
}
}
}

from:http://stackoverflow.com/questions/985868/mvvm-binding-to-list-isselected-while-tracking-issynchronizedwithcurrentitem

posted @ 2011-04-19 23:56  fannet  阅读(322)  评论(0)    收藏  举报