121 lines
4.4 KiB
C#
121 lines
4.4 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 MerkzeichenSelectionControl
|
|
{
|
|
public static readonly DependencyProperty AusgewaehlteMerkzeichenProperty = DependencyProperty.Register("AusgewaehlteMerkzeichen", typeof(ObservableCollection<Merkzeichen>), typeof(MerkzeichenSelectionControl));
|
|
public ObservableCollection<Merkzeichen> AusgewaehlteMerkzeichen
|
|
{
|
|
get { return (ObservableCollection<Merkzeichen>)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<Merkzeichen> _merkzeichenSourceListe;
|
|
public ObservableCollection<Merkzeichen> 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<MerkzeichenListBoxItem> _PossibleMerkzeichen = new ObservableCollection<MerkzeichenListBoxItem>
|
|
{
|
|
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<MerkzeichenListBoxItem> 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));
|
|
}
|
|
}
|
|
}
|