親ViewModelは、子行の選択変更イベントをリッスンする必要があります。以下のサンプルは、私が念頭に置いていたことを説明するはずです:
internal class ParentViewModel
{
private ChildViewModel _child;
public ParentViewModel(ChildViewModel child)
{
_child = child;
_child.SelectedChildRowChanged += new EventHandler<ChildRowChangedEventArgs>(OnChild_SelectedChildRowChanged);
}
void OnChild_SelectedChildRowChanged(object sender, ChildRowChangedEventArgs e)
{
// do your dynamic stuff here
}
}
internal class ChildViewModel
{
private ObservableCollection<ChildRowViewModel> _rows;
public ListCollectionView RowView { get; set; }
public event EventHandler<ChildRowChangedEventArgs> SelectedChildRowChanged;
public ChildViewModel(IList<ChildRowViewModel> rows)
{
_rows = new ObservableCollection<ChildRowViewModel>(rows);
RowView = new ListCollectionView(_rows);
RowView.CurrentChanged += new EventHandler(OnRowView_CurrentChanged);
}
void OnRowView_CurrentChanged(object sender, EventArgs e)
{
if (SelectedChildRowChanged != null)
{
SelectedChildRowChanged(this, new ChildRowChangedEventArgs(RowView.CurrentItem as ChildRowViewModel));
}
}
}
internal class ChildRowViewModel
{
}
internal class ChildRowChangedEventArgs : EventArgs
{
public ChildRowViewModel Row {get; private set;}
public ChildRowChangedEventArgs(ChildRowViewModel row)
{
this.Row = row;
}
}