Vereinsmeisterschaften  22aa7800eae54b428d40e835886cefe1fdefdfdf
This is a software that can be used to manage the internal competition of the swimming club Illertissen called "Vereinsmeisterschaften".
Loading...
Searching...
No Matches
EmptyItemsControlAdornerBehavior.cs
1using System.Collections.Specialized;
2using System.ComponentModel;
5using System.Windows.Data;
6using Microsoft.Xaml.Behaviors;
7
9{
14 public class EmptyItemsControlAdornerBehavior : Behavior<ItemsControl>
15 {
16 #region Overridden Members
17
18 protected override void OnAttached()
19 {
20 base.OnAttached();
21
22 _adornedElement = this.AssociatedObject;
23 _adornedElement.Loaded += AdornedElement_Loaded;
24
25 ICollectionView collectionViewSource = CollectionViewSource.GetDefaultView(_adornedElement.Items);
26 if (collectionViewSource != null)
27 {
28 collectionViewSource.CollectionChanged += ItemsChanged;
29 }
30 }
31
32 protected override void OnDetaching()
33 {
34 base.OnDetaching();
35 _adornedElement.Loaded -= AdornedElement_Loaded;
36
37 ICollectionView collectionViewSource = CollectionViewSource.GetDefaultView(_adornedElement.ItemsSource);
38 if (collectionViewSource != null)
39 {
40 collectionViewSource.CollectionChanged -= ItemsChanged;
41 }
42 }
43
44 #endregion
45
46 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
47
48 #region Dependency properties
49
54 {
55 get { return (DataTemplate)GetValue(DataTemplateProperty); }
56 set { SetValue(DataTemplateProperty, value); }
57 }
58 public static DependencyProperty DataTemplateProperty = DependencyProperty.Register(nameof(DataTemplate), typeof(DataTemplate), typeof(EmptyItemsControlAdornerBehavior));
59
63 public object Data
64 {
65 get { return (object)GetValue(DataProperty); }
66 set { SetValue(DataProperty, value); }
67 }
68 public static DependencyProperty DataProperty = DependencyProperty.Register(nameof(Data), typeof(object), typeof(EmptyItemsControlAdornerBehavior));
69
70 #endregion
71
72 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
73
74 #region Private Members and Events
75
76 private ItemsControl _adornedElement;
77 private TemplatedAdorner _itemsControlAdorner;
78
79 private void AdornedElement_Loaded(object sender, RoutedEventArgs e)
80 {
81 _itemsControlAdorner = new TemplatedAdorner(_adornedElement, this.DataTemplate, this.Data);
82 UpdateAdornerVisibility();
83 }
84
85 private void ItemsChanged(object sender, NotifyCollectionChangedEventArgs args)
86 => UpdateAdornerVisibility();
87
88 private void UpdateAdornerVisibility()
89 {
90 if (_itemsControlAdorner == null) { return; }
91 _itemsControlAdorner.Visibility = _adornedElement.Items.Count == 0 ? Visibility.Visible : Visibility.Collapsed;
92 }
93
94 #endregion
95 }
96}
Behavior used to display an TemplatedAdorner when the ItemsControl is empty.
DataTemplate DataTemplate
DataTemplate used for the ContentPresenter of the TemplatedAdorner
object Data
Data used for the ContentPresenter.Content of the TemplatedAdorner