未绑定复选框的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 ' "的路径错误
当列是无界的时,是否可以在单元格上使用绑定?
变化
<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}" /