4

DataGridTextColumn の表示プロパティをコンボ ボックス (cbIP) の IsChecked 値にバインドしようとしています。ほとんどの列について、次のような行で XAML の問題を解決しました。

<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 で生成された列に対して機能します。

私は何を間違っていますか?

前もって感謝します!

4

1 に答える 1