Wpf 将样式向下传递给UserControl的子级
因此,我正在编写一个UserControl,它是其他几个控件的组合。特别是一个图表、另一个自定义日期范围控件和ContentPresenters,用于填充屏幕的其他区域 因此,我使用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
{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”(键入“样式”)