//---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//---------------------------------------------------------------------------
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace ExtendedGrid.Microsoft.Windows.Controls
{
///
/// Converts DataGridHeadersVisibility to Visibility based on the given parameter.
///
[Localizability(LocalizationCategory.NeverLocalize)]
internal sealed class DataGridHeadersVisibilityToVisibilityConverter : IValueConverter
{
///
/// Convert DataGridHeadersVisibility to Visibility
///
/// DataGridHeadersVisibility
/// Visibility
/// DataGridHeadersVisibility that represents the minimum DataGridHeadersVisibility that is needed for a Visibility of Visible
/// null
/// Visible or Collapsed based on the value & converter mode
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var visible = false;
if (value is DataGridHeadersVisibility && parameter is DataGridHeadersVisibility)
{
var valueAsDataGridHeadersVisibility = (DataGridHeadersVisibility)value;
var parameterAsDataGridHeadersVisibility = (DataGridHeadersVisibility)parameter;
switch (valueAsDataGridHeadersVisibility)
{
case DataGridHeadersVisibility.All:
visible = true;
break;
case DataGridHeadersVisibility.Column:
visible = parameterAsDataGridHeadersVisibility == DataGridHeadersVisibility.Column ||
parameterAsDataGridHeadersVisibility == DataGridHeadersVisibility.None;
break;
case DataGridHeadersVisibility.Row:
visible = parameterAsDataGridHeadersVisibility == DataGridHeadersVisibility.Row ||
parameterAsDataGridHeadersVisibility == DataGridHeadersVisibility.None;
break;
}
}
if (targetType == typeof(Visibility))
{
return visible ? Visibility.Visible : Visibility.Collapsed;
}
else
{
return DependencyProperty.UnsetValue;
}
}
///
/// Not implemented
///
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}