I can't seem to get my visibilty converter to work. I think the issue is that i'm setting the relevant property in the constructor, so it's not picking it up down the line. Code is below, any suggestions as to how I can fix this?
MainWindowViewModel: (this is the main page; clicking a button will open a second window)
var newWindow = new SecondaryWindow
{
Title = title,
DataContext = new SecondaryWindowViewModel{MyData = data, ShowAdditionalColumns = false}
};
newWindow.Show();
Secondary Window: Here's the relevant XAML:
<Window.Resources>
<myApp:DataGridVisibilityConverter x:Key="gridVisibilityConverter" />
</Window.Resources>
<DataGrid ItemsSource="{Binding Path=MyData}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Print" Binding="{Binding Path=IsSelected}"/>
<DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}" IsReadOnly="True"/>
<DataGridTextColumn Header="LastName" Binding="{Binding Path=LastName}" IsReadOnly="True"/>
<DataGridTextColumn Header="Lines" Binding="{Binding Path=TotalLines}" IsReadOnly="True" Visibility="{Binding Path=ShowAdditionalColumns, Converter={StaticResource gridVisibilityConverter}}"/>
And the Secondary ViewModel code:
private bool showAdditionalColumns;
public bool ShowAdditionalColumns
{
get { return showAdditionalColumns; }
set
{
showAdditionalColumns= value;
NotifyPropertyChanged(() => ShowAdditionalColumns);
}
}
Here's the converter; pretty standard stuff here. I've put a breakpoint in the convert method; and it's never hit:
[ValueConversion(typeof(bool), typeof(Visibility))]
public class DataGridVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var booleanValue = (bool)value;
return booleanValue ? Visibility.Visible : Visibility.Hidden;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}