Я пытаюсь установить и привязать с помощью ToggleButton
, чтобы изменить видимость столбцов в DataGrid
. I am following this post Проблема заключается в том, что конвертер никогда не срабатывает, и я не знаю, почему.WPF DataGridTemplateColumn set Видимость со связыванием Не работает
Мой код выглядит следующим образом:
<DataGridTemplateColumn Header="My Header"
Visibility="{Binding IsChecked,
ElementName=AdvancedToggleButton,
Converter={StaticResource booleanToVisaulConverter}}" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<!-- Elements removed for brevity-->
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
Конвертер это
<Page.Resources>
<local:BooleanToVisaulConverter x:Key="booleanToVisaulConverter" />
</Page.Resources>
С кодом позади;
public class BooleanToVisaulConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool visibility = (bool)value;
return visibility ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
Visibility visibility = (Visibility)value;
return (visibility == Visibility.Visible);
}
}
редактировать: @Breeze нашел ошибку, что booleanToVisaulConverter
не было на самом деле, указывая на BooleanToVisaulConverter
. Это было исправлено, но все равно не стреляло. Спросил код ToggleButton;
<ToggleButton Name="AdvancedToggleButton" Content="Advanced" />
Пожалуйста, поделитесь декларацию advancedToggleButton, если ошибка не то, что вы используете BooleanToVisibiltyConverter в вашем статическом ресурсе вместо BooleanToVisaulConverter – Breeze
@Breeze констатировала BooleanToVisaulConverter, см.выше – Xaphann
Там уже BooleanToVisibilityConverter в рамках, FYI. И вы должны использовать такой инструмент, как Snooper, для проверки визуального дерева на предмет ошибок привязки во время выполнения. – Will