首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XAML DataContext

XAML DataContext
EN

Stack Overflow用户
提问于 2011-12-22 00:39:04
回答 4查看 579关注 0票数 0

这是可行的

代码语言:javascript
复制
<Border>
    <StackPanel>
        <TextBlock Text="{Binding Foo.Info1}" />
        <TextBlock Text="{Binding Foo.Info2}" />
    </StackPanel>
</Border>

但这不是

代码语言:javascript
复制
<Border DataContext="Foo">
    <StackPanel>
        <TextBlock Text="{Binding Info1}" />
        <TextBlock Text="{Binding Info2}" />
    </StackPanel>
</Border>

我的理解是,如果您为父对象设置datacontext,则子对象将能够绑定到属性。边框不是为人父母的好元素吗?我对XAML中的数据绑定非常陌生。有没有人能告诉我为什么第二个不起作用,并给我指出正确的方向?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-22 00:40:58

使用

代码语言:javascript
复制
<Border DataContext="{Binding Foo}"> 

如果不绑定,边框的数据上下文只是"Foo“字符串,它没有任何Info1、Info2属性

希望这能有所帮助

票数 1
EN

Stack Overflow用户

发布于 2011-12-22 00:41:23

让我在这里大胆猜测一下,您仍然需要绑定到DataContext,而不是简单地应用看起来像“Foo”的文字字符串:

代码语言:javascript
复制
<Border DataContext="{Binding Foo}">
  <StackPanel>
    <TextBlock Text="{Binding Info1}" />
    <TextBlock Text="{Binding Info2}" />
  </StackPanel>
</Border>
票数 1
EN

Stack Overflow用户

发布于 2011-12-22 00:41:31

你的语法是错的,你应该写:

代码语言:javascript
复制
<Border DataContext="{Binding Foo}">
    <StackPanel>
        <TextBlock Text="{Binding Info1}" />
        <TextBlock Text="{Binding Info2}" />
    </StackPanel>
</Border>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8593193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档