Files
DP44/DataPRO/Modules/RegionOfInterest/RegionOfInterestChannels/View/RegionOfInterestChannelsDataTemplateSelector.cs
2026-04-17 14:55:32 -04:00

48 lines
2.3 KiB
C#

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace RegionOfInterestChannels
{
public class RegionOfInterestChannelsDataTemplateSelector : DataTemplateSelector
{
public DataTemplate TextBlockDataTemplate { get; set; }
public DataTemplate CheckBoxDataTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (item is ChannelEnabler)
{
GridViewRowPresenter presenter = (container as ContentPresenter).Parent as GridViewRowPresenter;
if (presenter != null)
{
int checkStartColumn = -1;
for (int i = 0; i < presenter.Columns.Count; i++)
{
ContentPresenter templated = VisualTreeHelper.GetChild(presenter, i) as ContentPresenter;
var columnPropertyType = item.GetType().GetProperty(presenter.Columns[i].Header.ToString().Replace(" ", ""))?.GetValue(item, null).GetType();
if (null == columnPropertyType && checkStartColumn < 0)
{
checkStartColumn = i;
}
if (templated != null && templated.Equals(container as ContentPresenter))
{
switch (Type.GetTypeCode(columnPropertyType))
{
case TypeCode.String:
(container as ContentPresenter).Tag = item.GetType().GetProperty(presenter.Columns[i].Header.ToString().Replace(" ", ""))?.GetValue(item, null);
return TextBlockDataTemplate;
case TypeCode.Boolean:
default:
(container as ContentPresenter).Tag = i - checkStartColumn;
return CheckBoxDataTemplate;
}
}
}
}
return CheckBoxDataTemplate;
}
return TextBlockDataTemplate;
}
}
}