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

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));
}
}
}