Я пытаюсь связать свойство видимости DataGridTextColumn со значением IsChecked в поле со списком (cbIP). Для большинства колонн, я решил проблему в XAML с линиями, как это:Связывание программно сгенерированного свойства видимости DataGridTextColumn с флажком
<DataGridTextColumn Header="Time" Binding="{Binding MeasureTime}" Visibility="{Binding Source={x:Reference cbMeasureTime}, Path=IsChecked, Converter={StaticResource BoolToVisConverter}}"></DataGridTextColumn>
Однако некоторые столбцы считают ценности, основанные на массивы различной длины (и, следовательно, изменяя число столбцов). У меня нет проблем с созданием кода. Единственная проблема - свойство видимости. Я зашел так далеко:
private void Page_Loaded_1(object sender, RoutedEventArgs e)
{
for (int i = 0; i < ds.NumberOfIPValues; i++)
{
DataGridTextColumn col = new DataGridTextColumn() { Header = String.Format("IP #{0} (mV/V)", i + 1) };
col.Binding = new Binding(String.Format("IP[{0}]",i));
Binding b = new Binding("Visibility");
b.Source = cbIP;
b.Path = new PropertyPath(typeof(CheckBox).GetProperty("IsChecked"));
b.Converter = new BoolToVisibilityConverter();
BindingOperations.SetBinding(col, DataGridTextColumn.VisibilityProperty, b);
ViewInTableDataGrid.Columns.Add(col);
}
}
Излишне говорить, что это не работает. Я вижу столбцы, но флажок не работает. (Это работает для XAML сгенерированных столбцов
Что делать неправильно
Заранее спасибо
Кажется, я нашел решение сам Это сделал трюк:. b.Path = новый PropertyPath (CheckBox.IsCheckedProperty); – SamiHuutoniemi