将WPF用户控件的依赖属性传递给子控件

4

我有一个自定义的MyControl : UserControl,其中包含依赖属性。

string Text

在XAML中的MyControl内部有一个TextBox。

我希望将MyControl的Text依赖属性绑定到TextBox的Text依赖属性

最好的方法是什么?我能否声明MyControl的依赖属性传递到子依赖属性?

2个回答

5

最简单的方法是给你的MyControl.xaml文件的根元素分配一个x:Name="root"属性,然后像这样为你的TextBox使用绑定:

<TextBox Text="{Binding Text, ElementName=root}" />

(您可以为root指定自己的名称。)

但这是否会隐式地在用户控件上创建 DP。我仍然需要在代码后台中声明它,对吗? - bradgonesurfing
1
你必须在用户控件上声明属性;仅仅因为你绑定到它并不会隐式创建一个属性。你的问题说明你已经有了具有该依赖属性的自定义控件,并且正在寻求帮助进行绑定;如果不是这种情况,那么你可能需要重新措辞你的问题。 - Dan Puzey
不,我只是好奇。WPF 有很多黑暗的角落。如果这是可能的话,我也不会感到惊讶 :) - bradgonesurfing
这个可以工作,但是如果你想在绑定中指定一个StringFormat,比如:UnitlessValue="{Binding NumberAsPercent, StringFormat=P1}",有人找到了实现的方法吗? - GetFuzzy
@GetFuzzy:你尝试过{Binding NumberAsPercent,ElementName=root,StringFormat=P1}吗? - Dan Puzey
@DanPuzey 我的StringFormat无法工作,因为依赖属性类型是double。当依赖属性类型为字符串时,上述语法就可以正常工作了。 - GetFuzzy

1

我的答案 在这里 给出了一个非常好的例子,说明如何实现这个功能。你需要将控件绑定到视图模型上的属性,子视图模型具有依赖属性,可以在子控件上启用绑定并将值传递给子视图模型。该示例是针对 Silverlight 的,但在 WPF 中的实现也是相同的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接