MVVM, WPF og C#
Jeg er nybeynder i MVVM verdenen og har lidt problemer med at finde en god loesning...Jeg har foelgende pseudo XAML:
<Window DataContext="ViewModel">
<TextBlock Text="Navn:" />
<TextBox Text="{Binding NewEntity.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<Button IsEnabled="{Binding IsNewEntityValid}" />
</Window>
Pseudo ViewModel:
public class ViewModel : INotifyPropertyChanged
{
public ViewModel ()
{
NewEntity = new Entity();
NewEntity.PropertyChanged += eh; // Event handler bliver aldrig fjernet...
}
private void eh(object sender, EventArgs e)
{
this.OnPropertyChanged("IsNewCompanyValid");
}
public Entity NewEntity {get; private set;}
public event PropertyChangedEventHandler PropertyChanged;
public bool IsNewEntityValid {get { return NewEntity.Name.Length > 0; }}
}
Entity er en klasse som er blevet autogenereret fra SQL to Link => den implementerer INotifyPropertyChanged.
Idet TextBox aendres, saa opdateres Name i NewEntity. Det skyder PropertyChanged af, der bliver fanget af ViewModel, der saa skyder oenskede PropertyChanged("IsNewCompanyValid"). Det opdaterer i sidste ende knappen i Viewet.
Problemet er at jeg ikke fjerner event handleren. Dvs NewEntity har altid denne eventHandler paa sig. Hvad goer man i "best practice"?