DataGridCheckBoxColumn 的 IsReadOnly 属性绑定

7
我希望在我的数据表格中,根据集合中的值来启用/禁用每行的复选框列。我有一个名为AccountComponents的ObservableCollection,它是一个叫做AccountComponent的类的集合,该类具有一个名为Enabled的布尔属性。我尝试将Enabled属性绑定到IsReadOnly和IsEnabled,但没有成功。
这是我尝试使用DataGridCheckBoxColumn的XAML代码-
<DataGridCheckBoxColumn Binding="{Binding IsChecked}" IsReadOnly="{Binding AccountComponents/Enabled}"/>

这是我尝试使用DataGridTemplateColumn的XAML代码-
<DataGridTemplateColumn Header="">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Grid>
                                <CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}" IsEnabled="False"/>
                            </Grid>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <Grid>
                                <CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}" IsEnabled="{Binding Enabled}"/>
                            </Grid>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>
                </DataGridTemplateColumn>

非常感谢您的帮助来解决这个问题。


你从输出窗口得到了什么信息? - Bob.
对于任何列类型的任何属性都是一样的。抽象你的问题,搜索并找到解决方案。 - H.B.
1个回答

5
首先,在使用复选框时不需要指定CellEditingTemplate。复选框本身就是“可编辑/可选中”的。因此,请删除该CellEditingTemplate,因为这没有意义。
您是否尝试直接将 CheckBox 的 IsEnabled 属性绑定到单元格模板(CellTemplate)中的AccountComponentEnabled属性(与您在CellEditingTemplate中操作相同)?这应该可以解决您的问题。
<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <Grid>
            <CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}"
                      IsEnabled="{Binding Enabled}"/>
        </Grid>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

1
谢谢 Markus,它起作用了。你能告诉我为什么绑定到 DataGridCheckBoxColumn 的 IsReadOnly 属性不起作用吗? - Mark Libner
我还没有测试过,但是你的绑定表达式 'AccountComponents/Enabled' 看起来有些可疑。这通常用于主/从情况,在这种情况下,您已经拥有了详细信息。我的第一次尝试将是 IsReadOnly="{Binding Enabled}"。 - Markus
我也觉得它看起来很奇怪,但这是当我从数据绑定弹出窗口中选择Enabled时,VS创建的语法。我尝试了你的建议,但它没有起作用。我想我还是会坚持使用DataTemplateColumn。感谢你的帮助。 - Mark Libner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接