通过两个级别绑定到 TemplatedParent

20 浏览
0 Comments

通过两个级别绑定到 TemplatedParent

我确定这个问题之前已经解决过,但我现在找不到合适的解决方案...可能是因为我不知道我正在搜索的术语。\n假设我有这个自定义控件模板:\n


                        
                    
                
            
        
    

\n其中SelectedColor是ColorPicker的属性。\n在上面的示例中,模板绑定将在类型为Thumb的模板父项中查找SelectedColor,但是如何获得到第二层级模板的父项的绑定呢?

0
0 Comments

问题的出现原因是在ColorPicker样式中,使用了TemplateBinding来绑定SelectedColor属性。然而,这个绑定会向上遍历到ColorPickers属性,而不是Thumb上的属性。为了解决这个问题,可以使用RelativeSource的FindAncestor来指定绑定的目标对象,将AncestorType设置为local:ColorPicker,来指定绑定到ColorPicker的SelectedColor属性。

以下是完整的代码:


                        
                    
                
            
        
    

此外,还可以参考WPF Cheatsheet和stackoverflow上的相关讨论来了解更多关于TemplateBinding和RelativeSource的使用方法。

文章到此结束。

0