2013-02-26 75 views
0

我有一個網格,其中取消選中/選中標題行中的框對所有行上的此列中的每一行執行相同操作。該列對視圖模型解除綁定,使用從此處獲取的實現:http://www.devexpress.com/Support/Center/p/E1263.aspxWPF綁定IsEnabled爲未綁定複選框?

以下是帶有複選框的列的標記。這將創建一個盒子用戶在點擊標記行作爲簽署過:

<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'」的路徑錯誤「

它是pos當列是無限的時候可以使用綁定的單元格嗎?

+0

你能否告訴我們後面的代碼與類和你正在做數據綁定到屬性? – l46kok 2013-02-26 16:01:39

+0

這不會起作用,因爲'RelativeSource'源代碼綁定到UI元素。你需要的是綁定到數據元素。檢查我的答案。 – 2013-02-26 16:09:20

回答

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}"/
+0

謝謝,DataContext.RowData.Row.CanBeSignedOff取得了訣竅。 – 2013-02-26 16:18:28