gpt4 book ai didi

wpf - 如何将 DataGrid 中 CheckBox 的可见性绑定(bind)到该行的 DataContext?

转载 作者:行者123 更新时间:2023-12-04 22:32:43 25 4
gpt4 key购买 nike

我有一个像这样的 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>

目的是为每一行提供一个自定义类,为该行中每个单元格的内容提供属性 - 标签、修订标签等。所有这些都可以正常工作。我无法开始工作的是可见性绑定(bind)。如果表示 DataContext 中该行的类的 CanAdd 属性返回 False,我希望每一行中的复选框不可见。当我如上所述在 XAML 中添加 Visibility 绑定(bind)时,似乎发生的是 WPF 尝试将此绑定(bind)应用于实际列而不是每一行,因此绑定(bind)无法连接。我可以使用 WPF 资源管理器并手动将行的复选框可见性 DependencyProperty 绑定(bind)到行的数据上下文的 CanAdd 属性,并且工作正常,但我无法弄清楚如何在 XAML 或代码中使其生成该绑定(bind)自动为每一行中的复选框。有人对此有任何想法吗?

我四处寻找这样的问题,似乎出于某种原因,每个人都想根据整个网格的数据上下文中的某些内容来更改列本身的可见性,而没有其他人想更改可见性基于该行的数据上下文的各个行中的事物。我尝试了解决方案 here当我试图解决这个问题时,这就是那个答案想要做的。

最佳答案

您可以使用 DataGridTemplateColumnBooleanToVisibilityConverter 来实现所需的结果

BooleanToVisibilityConverter 添加到您的资源中

<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis"/>
</Window.Resources>

为 DataGridTemplateColumn 绑定(bind)设置 Converter

<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Add}"
Visibility="{Binding CanAdd, Converter={StaticResource BoolToVis}}" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

关于wpf - 如何将 DataGrid 中 CheckBox 的可见性绑定(bind)到该行的 DataContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18993381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com