DataContext不会在自定义控件中传播到子控件(非可视)
本文关键字:控件 可视 传播 自定义控件 DataContext | 更新日期: 2023-09-27 18:02:21
<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选项这个hack是在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
导出。当你的属性被改变,你必须AddLogicalChild在你的GridView
(和RemoveLogicalChild删除旧的值,如果有的话)。然后你必须覆盖你的GridView
上的LogicalChildren,并包括你的选项。
你需要在你的GridViewExportOptions
类中也这样做,关于它的"孩子"。