<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派生。更改属性后,必须在GridView上为AddLogicalChild(和RemoveLogicalChild才能删除旧值,如果有的话)。然后,您必须在GridView上覆盖LogicalChildren并包含您的选项。

关于“孩子”,您也需要在您的GridViewExportOptions类中执行此操作。

关于c# - DataContext不会传播到自定义控件中的子级(非可视),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6736793/

10-10 22:19