【问题标题】:WPF binding to a non dependency property on a control templateWPF 绑定到控件模板上的非依赖属性
【发布时间】:2011-03-04 08:22:18
【问题描述】:

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

  1. 当模板不是 DP 时,如何实现将 xaml 中的属性绑定到模板
  2. 更正我的设计:我认为有问题:如果有人要完全更改我的模板,我应该如何让他使用 Column 集合?

【问题讨论】:

    标签: wpf templates binding


    【解决方案1】:

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

    然后您可以将自定义样式应用于您的控件,使其看起来像您想要的那样。 (Here 你有一个基本的 ListView 样式,你可以使用它并根据你的需要进行扩展)

    【讨论】:

    • 这是一个选项,也许它会回答问题 2) 更正我的设计;) 但既然这是一个学习练习,我们就不能尝试找出解决方案吗? O真的没有办法吗?
    • @Felice 肯定有办法,但它们肯定涉及一种或另一种形式的代码。要让内部 ListView 占用 Columns,您需要 1:在外部 Columnproperties 更改时直接分配这些的代码,或 2:ListView 上用于绑定到外部 ColumnProperty 的附加 DependencyProperty/Behavior(避风港'看起来不太彻底,但实际上无法找到以前是否有人这样做过)
    【解决方案2】:

    有时绑定到不是依赖属性的属性可以使用the Binding Mode OneWayToSource解决

    你试过了吗?

    【讨论】:

    • 我没有,但现在我已经证明了 ListView 继承。无论如何,很高兴知道。
    猜你喜欢
    • 2021-08-26
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多