这有效
<Border>
<StackPanel>
<TextBlock Text="{Binding Foo.Info1}" />
<TextBlock Text="{Binding Foo.Info2}" />
</StackPanel>
</Border>
但这不是
<Border DataContext="Foo">
<StackPanel>
<TextBlock Text="{Binding Info1}" />
<TextBlock Text="{Binding Info2}" />
</StackPanel>
</Border>
我的理解是,如果您为父级设置datacontext,则子级将能够绑定到属性。边境不是父母的好元素吗? 我对XAML中的数据绑定很新。有人能告诉我为什么第二个剪断不起作用并指出我正确的方向?
答案 0 :(得分:1)
使用
<Border DataContext="{Binding Foo}">
没有绑定边框的datacontext只是“Foo”字符串,它没有任何Info1,Info2属性
希望这有帮助
答案 1 :(得分:1)
让我在这里猜测你还需要绑定到DataContext
,而不是简单地将看起来像XAML的内容应用为文字字符串“Foo”:
<Border DataContext="{Binding Foo}">
<StackPanel>
<TextBlock Text="{Binding Info1}" />
<TextBlock Text="{Binding Info2}" />
</StackPanel>
</Border>
答案 2 :(得分:1)
你的语法错了,你应该写:
<Border DataContext="{Binding Foo}">
<StackPanel>
<TextBlock Text="{Binding Info1}" />
<TextBlock Text="{Binding Info2}" />
</StackPanel>
</Border>
答案 3 :(得分:0)
<Border DataContext="{Binding Foo}">
<StackPanel>
<TextBlock Text="{Binding Info1}" />
<TextBlock Text="{Binding Info2}" />
</StackPanel>
</Border>
上述内容现在意味着Info1
和Info2
将存在于DataContext
上,在这种情况下,Foo
现已绑定到DataContext
。
像你一样设置<Border DataContext="Foo">
; <Border DataContext="Foo">
<StackPanel>
<TextBlock Text="{Binding}" />
<TextBlock Text="{Binding}" />
</StackPanel>
</Border>
会导致DataContext属性返回 Foo 。
TextBlock
如果您尝试上述代码,{{1}}将返回 Foo 。