Wpf 将样式向下传递给UserControl的子级

Wpf 将样式向下传递给UserControl的子级,wpf,xaml,data-binding,user-controls,Wpf,Xaml,Data Binding,User Controls,因此,我正在编写一个UserControl,它是其他几个控件的组合。特别是一个图表、另一个自定义日期范围控件和ContentPresenters,用于填充屏幕的其他区域 因此,我使用{binding ElementName=chartView,Path=RightContent}将我的内容演示者很好地绑定到依赖属性,我想如果我想将可选的数据点样式传递给实际的图表控件,我可以做类似{binding ElementName=chartView,Path=DataPointStyle}绑定到Style

因此,我正在编写一个UserControl,它是其他几个控件的组合。特别是一个图表、另一个自定义日期范围控件和ContentPresenters,用于填充屏幕的其他区域

因此,我使用
{binding ElementName=chartView,Path=RightContent}
将我的内容演示者很好地绑定到依赖属性,我想如果我想将可选的数据点样式传递给实际的图表控件,我可以做类似
{binding ElementName=chartView,Path=DataPointStyle}
绑定到Style类型的依赖项属性

遗憾的是,这给了我一个错误
System.Windows.Data错误:4:找不到引用'ElementName=chartView'绑定的源。BindingExpression:Path=DataPointStyle;DataItem=null;目标元素为“ColumnSeries”(名称=“”);目标属性为“DataPointStyle”(类型为“Style”)

因此,我认为在图表和列系列控件的工作方式方面存在一些奇怪的XAML范围界定问题。这是2010年2月WPF工具包中的图表控件,因此,如果有更多最新的东西我应该使用,知道也很酷

所以基本上:

<UserControl x:Class="MyFramework.Controls.ChartView"
         x:Name="chartView"
         ...>

    ...

    <!-- Works great -->
    <ContentPresenter Content="{Binding ElementName=chartView, Path=TopContent}" />

    <!-- Doesn't work -->
    <charting:Chart>
        <charting:ColumnSeries DataPointStyle="{Binding ElementName=chartView, Path=DataPointStyle}" />
        </charting:Chart>
    </charting:Chart>


    ...
</UserControl>

...
...

如何使ColumnSeries.DataPointStyle上的第二个绑定工作?

我从未遇到过这样的问题,但作为一种解决方法,您可以尝试将绑定与
相对资源
FindAncestor
模式结合使用。

我尝试过
{binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type控件:ChartView},Path=DataPointStyle}
但我仍然会遇到
System.Windows.Data错误:4:找不到引用“RelativeSource FindAncestor,AncestorType='MyFramework.Controls.ChartView',AncestorLevel='1'进行绑定的源代码。BindingExpression:Path=DataPointStyle;DataItem=null;目标元素为“ColumnSeries”(名称=“”);目标属性为“DataPointStyle”(键入“样式”)