【发布时间】:2013-09-24 22:46:31
【问题描述】:
我有一个这样的 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>
目的是为每一行提供一个自定义类,为该行中每个单元格的内容提供属性 - 标签、修订标签等。所有这些都可以正常工作。我无法工作的是可见性绑定。如果在 DataContext 中表示该行的类上的 CanAdd 属性返回 False,我希望每行中的复选框不可见。当我如上所述在 XAML 中添加 Visibility 绑定时,似乎发生的情况是 WPF 尝试将此绑定应用于实际列而不是每一行,因此绑定无法连接。我可以使用 WPF 资源管理器并手动将行的复选框可见性 DependencyProperty 绑定到行的数据上下文的 CanAdd 属性,这工作正常,但我无法弄清楚如何在 XAML 或代码中使其生成该绑定自动为每一行中的复选框。有人对此有任何想法吗?
我已经搜索过这样的问题,似乎出于某种原因,每个人都希望根据整个网格的数据上下文中的某些内容来更改列本身的可见性,而没有其他人想要更改可见性基于该行的数据上下文的单个行中的事物。我试图解决这个问题时尝试了here 的解决方案,而这正是该答案试图做的事情。
【问题讨论】:
标签: wpf binding wpfdatagrid