2011-03-04 141 views
3

我创建了一个WPF自定义控件作为自动学习练习。我的控件在模板中有一个ListView。我希望我的控制用户能够在他自己的Xaml中定义需要的列,但是我没有得到关于如何将列传递给内部列表视图的策略,因为与FindAncestor绑定抱怨“列”不是DependencyProperty。 Wekk的问题是:WPF绑定到控件模板上的非依赖项属性

  1. 如何实现从XAML一个属性绑定到模板时,它不是一个DP
  2. 纠正我的设计:我觉得有些不妥:如果有人将彻底改变我的模板,我应该如何让他使用Column集合?

回答

3

为什么不直接从ListView继承?然后,您拥有ListView所需的所有属性,并且还可以将自己的属性添加到该类中。

然后,您可以将自定义样式应用到您的控件,使其看起来像你想要的。 (Here你有,你可以使用和扩展您需要的基本的ListView样式)

+0

这是一个选项,也许它回答了这个问题2)纠正我的设计;但由于这是一个学习练习,我们不能试图找出解决方案?噢真的没有办法? – 2011-03-04 09:27:25

+0

@Felice当然有办法,但它们肯定会以某种形式涉及代码。为了让内部的ListView在列中使用,您需要1:直接为外部ColumnProperties的更改分配这些代码的代码,或2:用于绑定到外部ColumnProperty(避难所)的ListView上的附加的DependencyProperty/Behavior看起来不是很彻底,但实际上找不到有人以前做过) – 2011-03-04 09:39:30

+0

没问题,所以修改设计是一个解决方案。 – 2011-03-04 10:05:49

3

有时结合使用the Binding Mode OneWayToSource

您是否尝试过一个属性,它不是依赖属性可以解决?

+0

我没有,但现在我已经证明了ListView的继承。无论如何,很高兴知道。 – 2011-03-04 10:09:43