I have below DataGridTextColumn in my datagrid:
<my:DataGridTextColumn Visibility="{Binding Path=DataContext.Filter, Converter={StaticResource ColumnVisibilityConverter}">
Filter is a property in view model:
private EnumStatus filter;
public EnumStatus Filter
{
get { return filter; }
set
{
if (!filter.Equals(value))
{
filter= value;
OnPropertyChanged("Filter");
}
}
}
EnumStatus is an enumeration:
public enum EnumEstatRemesa
{
Pending,
Approved,
Reviewing
};
Converter:
public class ColumnVisibilityConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
EnumStatus status = (EnumStatus)value;
return (status == EnumStatus.Pending) ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Creating resource in window:
<Window.Resources>
<ColumnVisibilityConverter x:Key="ColumnVisibilityConverter"/>
</Window.Resources>
My problem here is that converter is never called. Why?
When debugging, output window says:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=DataContext.Filter; DataItem=null; target element is 'DataGridTextColumn' (HashCode=20546761); target property is 'Visibility' (type 'Visibility')