Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在多个级别上使用WPF绑定_C#_.net_Wpf_Data Binding_Relativesource - Fatal编程技术网

C# 如何在多个级别上使用WPF绑定

C# 如何在多个级别上使用WPF绑定,c#,.net,wpf,data-binding,relativesource,C#,.net,Wpf,Data Binding,Relativesource,这是我在WPF中开发复杂控件时经常遇到的问题 我想将一些属性绑定到父级的多个级别 我目前正在使用RelativeSource和TemplatedParent: Value="{Binding PropertyToBind, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" 但是有了这个,你可以绑定到直接的父对象,我有4个级别。。。所以我做了4次绑定,最终绑定到了好值 我无法删除我的4级对象,它们是复杂的控件 例如,我的

这是我在WPF中开发复杂控件时经常遇到的问题

我想将一些属性绑定到父级的多个级别

我目前正在使用RelativeSource和TemplatedParent:

Value="{Binding PropertyToBind, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
但是有了这个,你可以绑定到直接的父对象,我有4个级别。。。所以我做了4次绑定,最终绑定到了好值

我无法删除我的4级对象,它们是复杂的控件

例如,我的第一级是我的操纵杆控制。在我的操纵杆中,我有一个上下移动的滑块控制(2nd level)。在我的滑块中,我有一个按钮(3rd level)。在我的按钮中,我有一个文本(4th level),我想绑定到我的level 1(操纵杆)中的属性

我要做的是将文本绑定到按钮中的属性,然后将按钮的属性绑定到滑块中的属性,等等。。到操纵杆。有时,我需要创建自定义控件(在可以绑定的地方添加属性)

这不是我的场景,这只是一个例子(是的,在这个例子中我们可能会删除一些级别,但在我的例子中不是),我不想回答:删除这个或这个对象

有没有办法直接绑定到多个级别?每个级别都是样式中的控件模板


我正在使用WPF 4、.NET 4.0、Blend 4、Visual Studio 2010

您不应该这样做,它破坏了封装并引入了不必要的依赖项。您所描述的是要走的路:

我要做的是将文本绑定到按钮中的属性,然后将按钮的属性绑定到滑块中的属性,等等


您不应该这样做,它会破坏封装并引入不必要的依赖关系。您所描述的是要走的路:

我要做的是将文本绑定到按钮中的属性,然后将按钮的属性绑定到滑块中的属性,等等


您是否在绑定中尝试过其他的
RelativeSource
排列?具体来说,您可以使用
RelativeSource={relativesourcefindancestor,AncestorType={x:Type SomeType}}}
来查找您上方的特定控件,看起来它可能适合您的场景。

您在绑定中尝试过其他的
RelativeSource
排列吗?具体地说,您可以使用
RelativeSource={relativeSourceFindancestor,AncestorType={x:Type SomeType}}}
查找您上方的特定控件,这看起来可能适合您的场景。

但是当我有10个属性要绑定时,每次都需要创建一个具有10个依赖属性的自定义控件。(按钮、滑块等的自定义控件)@mlemay:如果您需要自定义所有属性,那么您正在做一些奇怪的事情。此外,DataContext一直被继承到您的内部控件,为什么不使用它呢?或者你一直在更改DataContext?是我们的图形设计师创建了层次结构,他不知道如何绑定到属性。。。他不是程序员,我们需要一个简单的解决方案。我将尝试在DataContext上找到DataContext thxA注释:您也不应该使用内部控件模板,它还破坏了封装。控件模板应该是完全独立的,不需要了解模板控件之外的任何数据或其他控件。但是当我有10个属性要绑定时,每次都需要创建一个具有10个依赖属性的自定义控件。(按钮、滑块等的自定义控件)@mlemay:如果您需要自定义所有属性,那么您正在做一些奇怪的事情。此外,DataContext一直被继承到您的内部控件,为什么不使用它呢?或者你一直在更改DataContext?是我们的图形设计师创建了层次结构,他不知道如何绑定到属性。。。他不是程序员,我们需要一个简单的解决方案。我将尝试在DataContext上找到DataContext thxA注释:您也不应该使用内部控件模板,它还破坏了封装。控件模板应该是完全独立的,不需要了解模板控件之外的任何数据或其他控件。