2011-07-18 39 views
2
<k:GridView Name="_masterGridView" 
      ItemsSource="{Binding ProductLocationList}" 
      SelectedItem="{Binding ProductLocationSelected}"> 
<!-- DataContext does not propagate here automatically in user control... why? --> 
    <k:GridView.ExportOptions> 
     <k:GridViewExportOptions Title="Production Location Management"> 
      <k:SearchCriteria > 
       <k:SearchCriterion Title="End Date" 
            Value="{Binding SearchEndDate}" 
            ValueFormat="g" /> 
      </k:SearchCriteria> 
     </k:GridViewExportOptions> 
    </k:GridView.ExportOptions> 
<!-- to here --> 

我必須做這個技巧,它只是傳播到GridViewExport選項 的黑客是在GridView類...的DataContext不會傳播到孩子(非可視)自定義控制

public GridViewExportOptions ExportOptions 
{ 
    get { return _exportOptions; } 
    set 
    { 
     _exportOptions = value; 

     if (value != null) 
     { 
      ExportOptions.SetBinding(FrameworkContentElement.DataContextProperty, 
       new Binding("DataContext") 
       { 
        Source = this, 
        Mode = BindingMode.TwoWay 
       }); 
     } 
    } 
} 

回答

3

您需要將GridViewExportOptions作爲邏輯子項添加。實際上,您的GridViewExportOptions必須來自FrameworkElement。當你的財產被更改時,你的GridView(和RemoveLogicalChild刪除舊值,如果有的話)必須AddLogicalChild。然後,您必須覆蓋GridView上的LogicalChildren幷包含您的選項。

您需要在您的GridViewExportOptions課程中對此進行相關操作,就其「兒童」而言。

+0

我在想你確認了!謝謝! –

+0

謝謝CodeNaked。這個答案使我對一個不同但類似的問題有了一個解決方案,在那裏我定義了自己的自定義ContentControl,但沒有重寫LogicalChildren屬性。 – jpierson

相關問題