У меня проблема с mvvm при вызове методов из сетки данных в silverlight.
Я хотел бы зарегистрировать триггер для события измененного свойства для каждой строки.
Проблемы:
- Привязка метода к другому контексту данных (myMVVM), а не к объекту MyEntity
- Получите как можно больше информации, например dataItem, call и property, и передайте ее OnPropertyChanged
Есть идеи?
Вот что я хотел бы иметь:
<Grid DataContext="{Binding myMVVM}">
<data:DataGrid ItemsSource="{Binding MyCollection}">
<data:DataGrid.Columns>
<data:DataGridTextColumn Binding="{Binding Text}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PropertyChanged">
<i:CallMethodAction TargetObject="{Binding}" Method="OnPropertyChanged"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</data:DataGridTextColumn>
<data:DataGridTextColumn Binding="{Binding Text2}" />
<data:DataGridTextColumn Binding="{Binding Text3}" />
<data:DataGridTextColumn Binding="{Binding Text4}" />
<data:DataGridTextColumn Binding="{Binding Text5}" />
</data:DataGrid.Columns>
</data:DataGrid>
</Grid>
public class MyMVVM {
public System.Collections.Generic.List<MyEntry> MyCollection { get; set; }
public void OnPropertyChanged(object sender, MyEventArgs ea) {
DataGrid mySender = (DataGrid)sender;
MyEntry dataItem = ea.DataItem;
string propertyName = ea.PropertyName;
}
}
public class MyEntry : System.ComponentModel.INotifyPropertyChanged {
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
private string _text;
public string Text {
get { return _text; }
set {
_text = value;
RaisePropertyChangedEvent("Text");
}
}
public string Text2 { get; set; }
public string Text3 { get; set; }
public string Text4 { get; set; }
public string Text5 { get; set; }
public void RaisePropertyChangedEvent(string propname) {
if (PropertyChanged != null) {
PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propname));
}
}
}