Я не могу заставить мой visibilty конвертер работать. Я думаю, проблема заключается в том, что я устанавливаю соответствующее свойство в конструкторе, поэтому он не подбирает его по линии. Код ниже, любые предложения относительно того, как я могу это исправить?WPF конвертер видимости не стрельба
MainWindowViewModel: (это главная страница, нажав на кнопку откроется второе окно)
var newWindow = new SecondaryWindow
{
Title = title,
DataContext = new SecondaryWindowViewModel{MyData = data, ShowAdditionalColumns = false}
};
newWindow.Show();
Второстепенные окна: Вот соответствующий 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}}"/>
И Вторичный код ViewModel :
private bool showAdditionalColumns;
public bool ShowAdditionalColumns
{
get { return showAdditionalColumns; }
set
{
showAdditionalColumns= value;
NotifyPropertyChanged(() => ShowAdditionalColumns);
}
}
Вот преобразователь; довольно стандартный материал здесь. Я поставил точку останова в методе convert; и он никогда не ударил:
[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();
}
}
Просьба показать код для конвертера видимости. –
Поскольку объект не полностью сконструирован, когда свойство установлено, ничто не может прослушивать событие с измененным свойством. Некоторые сумасшедшие идеи: Есть ли причина, по которой ShowAdditionalColumns не может быть свойством Dependency? Я считаю, что это решило бы проблему. Или вы можете настроить обработчик для события DataContextChanged SecondaryWindow и установить свойство в обработчике ... –
Выдает ли окно вывода что-нибудь? Другое 'DataGridTextColumn' правильно связывается? –