如何绑定到扩展器内部的控制?内容模板

发布于 2024-09-14 17:48:07 字数 557 浏览 6 评论 0原文

我在 Expasnders 内容模板内有一个文本框,我试图从扩展器外部绑定到该文本框,但这实际上是不可能的,我在扩展器内有另一个文本框,如下所示:

以及扩展器外部此标记的精确副本,当 txtTitle 更改时,扩展器内的文本框会更新其文本属性,而外部的则不会,那么我如何从扩展器外部绑定到 txtTitle?

我将尝试用一些示例 xaml 来说明它(听起来很有趣)。

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

<toolkit:Expander>
<toolkit:Expander.ContentTemplate>
<TextBox Name="ExpandertxtBox" />
</toolkit:Expander.ContentTemplate>
</toolkit:Expander>

问题是绑定不起作用,因为 ExpandertxtBox 位于内容模板内,并且我尝试从外部绑定,那么我如何访问它,正确的绑定路径是什么?

I have a textbox inside a Expasnders contentemplate that I'm trying to bind to from outside the expander, but it's not really possible, I have another textbox inside the expander looking like this:

and an exact duplicate of this markup outside the expander, The textbox inside the expander updates it's text proeprty when txtTitle is changed, the one outside doesn't so how do I get bind to txtTitle from outside the expander??

I will try to illustrate it with some sample xaml (sounds fun pronounced).

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

<toolkit:Expander>
<toolkit:Expander.ContentTemplate>
<TextBox Name="ExpandertxtBox" />
</toolkit:Expander.ContentTemplate>
</toolkit:Expander>

The problem is that the binding wont work because ExpandertxtBox is inside a contentemplate, and I'm trying to bind from outside, so how can I access it, what is the correct bindingpath?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌酱 2024-09-21 17:48:07

我最终创建了这个方法来处理我的问题

private void SetFilterBinding(object ctrl, object value, FilterOperator fo, string ctrlproperty, string dbproperty)
{
    var fd = new FilterDescriptor(dbproperty, fo, value);
    BindingOperations.SetBinding(fd, FilterDescriptor.ValueProperty, new Binding{ Path = new PropertyPath(ctrlproperty), Source = ctrl});
    nodeDomainDataSource.FilterDescriptors.Add(fd);
}

I Ended up creating this method to handle my problem

private void SetFilterBinding(object ctrl, object value, FilterOperator fo, string ctrlproperty, string dbproperty)
{
    var fd = new FilterDescriptor(dbproperty, fo, value);
    BindingOperations.SetBinding(fd, FilterDescriptor.ValueProperty, new Binding{ Path = new PropertyPath(ctrlproperty), Source = ctrl});
    nodeDomainDataSource.FilterDescriptors.Add(fd);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文