未绑定复选框的WPF绑定已启用

本文关键字:绑定 启用 WPF 复选框 | 更新日期: 2023-09-27 18:01:18

我有一个网格,其中取消选中/检查标题行的框在此列的框中的每一行对所有行都做相同的操作。该列与视图模型解除绑定,使用下面的实现:http://www.devexpress.com/Support/Center/p/E1263.aspx

下面是带有复选框的列的标记。这将创建一个用户单击的框,将行标记为已签名:

<dxg:GridColumn FieldName="UnboundCheck" Header="SignOff" UnboundType="Boolean"  Width="85px" Visible="True" >
    <dxg:GridColumn.HeaderTemplate>
        <DataTemplate>
            <dxe:CheckEdit Content="{Binding}"  Checked="CheckEdit_Checked" Unchecked="CheckEdit_Unchecked"/>
        </DataTemplate>
    </dxg:GridColumn.HeaderTemplate>
</dxg:GridColumn>

用户也有能力点击每个单独的复选框,但有一个新的要求,首先检查用户权限。我需要根据另一列在每行上设置IsEnabled,该列指示用户是否有权勾选该框。我尝试将CellTemplate添加到gridecolum列,并使用这样的绑定:

    <dxg:GridColumn.CellTemplate>
        <DataTemplate>
             <dxe:CheckEdit Content=" hi" IsEnabled="{Binding CanBeSignedOff,RelativeSource={RelativeSource TemplatedParent},diag:PresentationTraceSources.TraceLevel=High}" />
        </DataTemplate>
    </dxg:GridColumn.CellTemplate>

但是绑定不工作,错误消息:

System.Windows.Data Error: 40 : BindingExpression path error: 'CanBeSignedOff' property not found on 'object' ''CellEditor' (Name='PART_CellEditor')'. BindingExpression:Path=CanBeSignedOff; DataItem='CellEditor' (Name='PART_CellEditor'); target element is 'CheckEdit' (Name=''); target property is 'IsEnabled' (type 'Boolean')

我也试过:

{Binding CanBeSignedOff,RelativeSource={RelativeSource AncestorType={x:Type dxg:GridRow}}

但是得到"property not found on 'object' " grid ' "的路径错误

当列是无界的时,是否可以在单元格上使用绑定?

未绑定复选框的WPF绑定已启用

变化

<dxe:CheckEdit Content=" hi" IsEnabled="{Binding CanBeSignedOff,RelativeSource={RelativeSource TemplatedParent},diag:PresentationTraceSources.TraceLevel=High}" /

<dxe:CheckEdit Content=" hi" IsEnabled="{Binding DataContext.CanBeSignedOff,RelativeSource={RelativeSource TemplatedParent},diag:PresentationTraceSources.TraceLevel=High}" /

<dxe:CheckEdit Content=" hi" IsEnabled="{Binding DataContext.RowData.Row.CanBeSignedOff,RelativeSource={RelativeSource TemplatedParent},diag:PresentationTraceSources.TraceLevel=High}" /