using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Windows; using BeWo.Annotations; using BS.Shared; using BS.Shared.Core; using BS.Shared.Extensions; namespace BeWo.View.Controls { public partial class BehinderungsartenSelectionControl { public static readonly DependencyProperty AusgewaehlteBehinderungsartenProperty = DependencyProperty.Register("AusgewaehlteBehinderungsarten", typeof(ObservableCollection), typeof(BehinderungsartenSelectionControl)); public ObservableCollection AusgewaehlteBehinderungsarten { get { return (ObservableCollection)GetValue(AusgewaehlteBehinderungsartenProperty); } set { SetValue(AusgewaehlteBehinderungsartenProperty, value); } } public static readonly DependencyProperty AusgewaehlteBehinderungsartenStringProperty = DependencyProperty.Register("AusgewaehlteBehinderungsartenString", typeof(String), typeof(BehinderungsartenSelectionControl)); public String AusgewaehlteBehinderungsartenString { get { return (String) GetValue(AusgewaehlteBehinderungsartenStringProperty); } set { SetValue(AusgewaehlteBehinderungsartenStringProperty, value); } } private ObservableCollection _behinderungsartenSourceListe; public ObservableCollection BehinderungsartenSourceListe { get { return _behinderungsartenSourceListe; } set { _behinderungsartenSourceListe = value; PossibleBehinderungsarten.DoForEach(dfe => { if (_behinderungsartenSourceListe != null && _behinderungsartenSourceListe.Contains(dfe.Behinderungsart)) { dfe.IsChecked = true; } }); InitBehinderungsartenString(); } } private void InitBehinderungsartenString() { var toolTipText = PossibleBehinderungsarten.Where(w => w.IsChecked).Aggregate(String.Empty, (current, item) => current + String.Format("{0}; ", item.Name)); AusgewaehlteBehinderungsartenString = toolTipText.TrimEnd(new[] { ' ', ';' }); } private readonly ObservableCollection _PossibleBehinderungsarten = new ObservableCollection { new BehinderungsartenListBoxItem(Behinderungsart.Blindheit), new BehinderungsartenListBoxItem(Behinderungsart.Epilepsie), new BehinderungsartenListBoxItem(Behinderungsart.Gehoerlosigkeit), new BehinderungsartenListBoxItem(Behinderungsart.GeistigeBehinderung), new BehinderungsartenListBoxItem(Behinderungsart.Hoerbehinderung), new BehinderungsartenListBoxItem(Behinderungsart.InnereErkrankungen), new BehinderungsartenListBoxItem(Behinderungsart.Koerperbehinderung), new BehinderungsartenListBoxItem(Behinderungsart.Lernbehinderung), new BehinderungsartenListBoxItem(Behinderungsart.PsychischeErkrankungen), new BehinderungsartenListBoxItem(Behinderungsart.Sehbehinderung), new BehinderungsartenListBoxItem(Behinderungsart.Suchtkrankheiten) }; public IEnumerable PossibleBehinderungsarten { get { return _PossibleBehinderungsarten; } } public BehinderungsartenSelectionControl() { DataContext = this; InitializeComponent(); } private void BehinderungsartCB_OnChecked(object sender, RoutedEventArgs e) { InitBehinderungsartenString(); AusgewaehlteBehinderungsarten = PossibleBehinderungsarten.Where(w => w.IsChecked).Select(s => s.Behinderungsart).ToObservableCollection(); } } public class BehinderungsartenListBoxItem : INotifyPropertyChanged { private bool _IsChecked; public bool IsChecked { get { return _IsChecked; } set { _IsChecked = value; OnPropertyChanged("IsChecked"); } } public String Name { get { return EnumTranslations.BehinderungsartTranslations[Behinderungsart]; } } public Behinderungsart Behinderungsart { get; set; } public event PropertyChangedEventHandler PropertyChanged; public BehinderungsartenListBoxItem(Behinderungsart pBehinderungsart) { Behinderungsart = pBehinderungsart; } [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged(string propertyName) { var handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } } }