2012-01-06 39 views
0

我有一种风格,它的文本属性绑定到我这里对象的名称属性里面的文本框是代码:为什么这个绑定不起作用?

<Style TargetType="s:Node"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ContentControl"> 
       <TextBox x:Name="textboxName" Text="{Binding Source={RelativeSource TemplatedParent}, Path=Tag, Mode=TwoWay}" IsHitTestVisible="False"/> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

构造函数中的节点,我有:

public Node() 
    { 
     Name = "node"; 
     Tag = 100;  
    } 

我我不知道我做错了什么,任何帮助将不胜感激。

+0

该代码不会编译,可以有一种风格的直接内容... – 2012-01-06 02:17:55

+0

@ H.B。我删除了一些代码,发布时,我添加了模板标签,应该编译我认为。 – mihajlv 2012-01-06 02:19:44

+0

它不会,你需要一个'Setter'。 – 2012-01-06 02:21:04

回答

0

Source不处理RelativeSource当设置为Binding.RelativeSource,但只是需要该标记扩展对象,并查找其上性能Binding的方式做。

RelativeSource描述如何的相对源应当找到并且应该因此不能直接用于作为Source用于绑定。

+0

H.B.我想我明白你在说什么,但我不知道该怎么写,正确的绑定是什么? – mihajlv 2012-01-06 02:36:59

+0

@mihajlv:你不是已经在自己的答案中弄清楚了吗? (也是模板的TargetType应该与样式的TargetType相同) – 2012-01-06 02:43:23

+0

我以为我做过,但它只绑定到标签属性,当我尝试绑定到Name属性时,它给了我ToString()方法,这是我正在使用的: '' ------ ----------- '' – mihajlv 2012-01-06 02:46:14

1

源应该是RelativeSource,我不知道为什么它不能这样工作。