Files
BeWoPlaner/BeWo/Core/ComboBoxTemplateSelector.cs
2016-06-27 01:45:38 +02:00

45 lines
1.4 KiB
C#

using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using BeWo.Controls;
namespace BeWo.Core
{
public class ComboBoxTemplateSelector : DataTemplateSelector
{
private readonly Control _Combo;
public ComboBoxTemplateSelector(Control pCombo)
{
this._Combo = pCombo;
this.SelectedItemTemplate = pCombo.FindResource("SelectedItemTemplate") as DataTemplate;
this.DropDownItemTemplate = pCombo.FindResource("DropDownItemTemplate") as DataTemplate;
}
public DataTemplate DropDownItemTemplate { get; set; }
public DataTemplate SelectedItemTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (item == null)
{
return null;
}
if (this._Combo is NullItemComboBox && ((NullItemComboBox)this._Combo).NullText.Equals(item))
{
return NullItemComboBox.NullTextItemTemplate;
}
DependencyObject lParent = container;
while (!(lParent is ComboBox) && !(lParent is ScrollViewer))
{
lParent = VisualTreeHelper.GetParent(lParent);
}
return lParent is ComboBox ? this.SelectedItemTemplate : this.DropDownItemTemplate;
}
}
}