<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 -->
我必须执行此 hack,它只会传播到 GridViewExport 选项 黑客在 GridView 类中......
public GridViewExportOptions ExportOptions
{
get { return _exportOptions; }
set
{
_exportOptions = value;
if (value != null)
{
ExportOptions.SetBinding(FrameworkContentElement.DataContextProperty,
new Binding("DataContext")
{
Source = this,
Mode = BindingMode.TwoWay
});
}
}
}
最佳答案
您需要将 GridViewExportOptions
添加为逻辑子项。实际上,您的 GridViewExportOptions
必须从 FrameworkElement
派生。当您的属性(property)发生变化时,您必须AddLogicalChild在您的 GridView 上(以及删除旧值(如果有))。那么你必须覆盖 LogicalChildren在您的 GridView
上并包含您的选项。
您还需要在 GridViewExportOptions
类中针对它的“子级”执行此操作。
关于c# - DataContext 不会传播到自定义控件中的子级(非可视),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6736793/