Files
BeWoPlaner/BeWo/View/Controls/BehinderungsartenSelectionControl.xaml.cs
2016-06-27 01:45:38 +02:00

124 lines
5.0 KiB
C#

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<Behinderungsart>), typeof(BehinderungsartenSelectionControl));
public ObservableCollection<Behinderungsart> AusgewaehlteBehinderungsarten
{
get { return (ObservableCollection<Behinderungsart>)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<Behinderungsart> _behinderungsartenSourceListe;
public ObservableCollection<Behinderungsart> 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<BehinderungsartenListBoxItem> _PossibleBehinderungsarten = new ObservableCollection<BehinderungsartenListBoxItem>
{
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<BehinderungsartenListBoxItem> 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));
}
}
}