WPF绑定IsEnabled是否为未绑定的复选框?

时间:2013-02-26 15:57:50

标签: c# wpf xaml binding

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

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

但是得到了“'对象'''GridRow'上找不到属性的路径错误”

当色谱柱无界时,是否可以在细胞上使用结合?

1 个答案:

答案 0 :(得分: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}" /