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 MerkzeichenSelectionControl { public static readonly DependencyProperty AusgewaehlteMerkzeichenProperty = DependencyProperty.Register("AusgewaehlteMerkzeichen", typeof(ObservableCollection), typeof(MerkzeichenSelectionControl)); public ObservableCollection AusgewaehlteMerkzeichen { get { return (ObservableCollection)GetValue(AusgewaehlteMerkzeichenProperty); } set { SetValue(AusgewaehlteMerkzeichenProperty, value); } } public static readonly DependencyProperty AusgewaehlteMerkzeichenStringProperty = DependencyProperty.Register("AusgewaehlteMerkzeichenString", typeof(String), typeof(MerkzeichenSelectionControl)); public String AusgewaehlteMerkzeichenString { get { return (String)GetValue(AusgewaehlteMerkzeichenStringProperty); } set { SetValue(AusgewaehlteMerkzeichenStringProperty, value); } } private ObservableCollection _merkzeichenSourceListe; public ObservableCollection MerkzeichenSourceListe { get { return _merkzeichenSourceListe; } set { _merkzeichenSourceListe = value; PossibleMerkzeichen.DoForEach(dfe => { if (_merkzeichenSourceListe != null && _merkzeichenSourceListe.Contains(dfe.Merkzeichen)) { dfe.IsChecked = true; } }); InitMerkzeichenString(); } } private void InitMerkzeichenString() { var toolTipText = PossibleMerkzeichen.Where(w => w.IsChecked).Aggregate(String.Empty, (current, item) => current + String.Format("{0}; ", item.Name)); AusgewaehlteMerkzeichenString = toolTipText.TrimEnd(new[] { ' ', ';' }); } private readonly ObservableCollection _PossibleMerkzeichen = new ObservableCollection { new MerkzeichenListBoxItem(Merkzeichen.aG), new MerkzeichenListBoxItem(Merkzeichen.B), new MerkzeichenListBoxItem(Merkzeichen.Bl), new MerkzeichenListBoxItem(Merkzeichen.G), new MerkzeichenListBoxItem(Merkzeichen.Gl), new MerkzeichenListBoxItem(Merkzeichen.H), new MerkzeichenListBoxItem(Merkzeichen.Kl1), new MerkzeichenListBoxItem(Merkzeichen.RF) }; public IEnumerable PossibleMerkzeichen { get { return _PossibleMerkzeichen; } } public MerkzeichenSelectionControl() { DataContext = this; InitializeComponent(); } private void MerkzeichenCB_OnChecked(object sender, RoutedEventArgs e) { InitMerkzeichenString(); AusgewaehlteMerkzeichen = PossibleMerkzeichen.Where(w => w.IsChecked).Select(s => s.Merkzeichen).ToObservableCollection(); } } public class MerkzeichenListBoxItem : INotifyPropertyChanged { private bool _IsChecked; public bool IsChecked { get { return _IsChecked; } set { _IsChecked = value; OnPropertyChanged("IsChecked"); } } public String Name { get { return EnumTranslations.MerkzeichenTranslations[Merkzeichen]; } } public Merkzeichen Merkzeichen { get; set; } public event PropertyChangedEventHandler PropertyChanged; public MerkzeichenListBoxItem(Merkzeichen pMerkzeichen) { Merkzeichen = pMerkzeichen; } [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged(string propertyName) { var handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } } }