私はそのようなJibGrid DataGridを持っています(JibGridは、フィルタリングなどを実装するための標準DataGridのオープンソースの比較的単純なサブクラスです):
<dataGrid:JibGrid ItemsSource="{Binding AvailableRDs}"
FilteredItemsSource="{Binding AvailableRDs}"
SelectedItem="{Binding SelectedAvailRD}"
AutoGenerateColumns="False" >
<dataGrid:JibGrid.Columns>
<DataGridCheckBoxColumn Header="Add?" Binding="{Binding Add}" Visibility="{Binding GetAddVisibility}"/>
<DataGridTextColumn Header="Tag" Binding="{Binding Tag}" />
<DataGridTextColumn Header="Revision Tag" Binding="{Binding RevisionTag}" />
<DataGridTextColumn Header="Current System" Binding="{Binding SystemStr}" />
</dataGrid:JibGrid.Columns>
</dataGrid:JibGrid>
その意図は、その行の各セルのコンテンツのプロパティを提供する各行のカスタム クラス (Tag、RevisionTag など) があることです。これらはすべて正常に機能します。私が仕事に就けないのは、その可視性バインディングです。DataContext のその行を表すクラスの CanAdd プロパティが False を返す場合、各行のチェックボックスを非表示にしたいと思います。上記のように XAML で Visibility バインディングを追加すると、WPF がこのバインディングを各行ではなく実際の列に適用しようとするため、バインディングが接続に失敗するようです。WPF エクスプローラーを使用して、行のチェックボックスの可視性 DependencyProperty を行のデータ コンテキストの CanAdd プロパティに手動でバインドできます。これは正常に機能しますが、XAML またはコードで方法がわかりません。すべての行のチェックボックスのバインディングを自動的に生成します。誰でもそれについて何か考えがありますか?
このような質問を検索しましたが、何らかの理由で、誰もがグリッド全体のデータコンテキスト内の何かに基づいて列自体の可視性を変更したいと考えており、他の誰もグリッド内のものの可視性を変更したくないようです。その行のデータコンテキストに基づく個々の行。これを理解しようとしているときに、ここで解決策を試しました。それが、その答えがやろうとしていることです。