0

我有一个网格,其中取消选中/选中标题行中的框在所有行的此列中的框中的每一行上都相同。该列未绑定到视图模型,使用从此处获取的实现: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到 GridColumn,并使用如下绑定:

    <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}}

但是出现“在'object'''GridRow'上找不到属性”的路径错误

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

4

1 回答 1

2

改变

<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}" /
于 2013-02-26T16:02:34.550 回答