【问题标题】:How to setup data binding in WPF如何在 WPF 中设置数据绑定
【发布时间】:2014-10-03 06:12:43
【问题描述】:

我阅读了这篇文章http://msdn.microsoft.com/en-us/magazine/hh852595.aspx 试图了解 WPF 中的数据绑定。但只需要在代码中如何绑定数据上下文。

ContentPanel.DataContext = _currentPerson;

我有这个项目页面 xaml。我不明白 DataContext 是如何设置的。 DataContext属性和d:DataContext属性有什么区别?

<Page
    x:Class="Myapp.ItemPage"
 DataContext="{Binding DefaultViewModel.Item, RelativeSource={RelativeSource Self}}"
    d:DataContext="{Binding Groups[0].Items[0], Source={d:DesignData Source=../OneList.Shared/DataModel/SampleData.json, Type=data:SampleDataSource}}"
 >
...
</Page>

【问题讨论】:

  • d:DataContext 用于设计时,DataContext 用于运行时

标签: c# wpf


【解决方案1】:

d:DataContext 用于设计时。通过设置此项,您将能够看到 Expression Blend 等工具中出现的数据。

d 来自xmlns:d="http://schemas.microsoft.com/expression/blend/2008",通常还需要包含mc:Ignorable="d"

当您想为面板指定设计时宽度和高度时,它也很有帮助。例如,

d:DesignWidth="1280" d:DesignHeight="812"

【讨论】:

    【解决方案2】:

    页面DataContext设置在这一行:

    DataContext="{Binding DefaultViewModel.Item, RelativeSource={RelativeSource Self}}"
    
    • ItemPage 必须具有属性 DefaultViewModel。因此,您将 DataContext 绑定到 DefaultViewModel 实例的 Item 属性。

    • 通过 RelativeSource Self,您要求绑定引擎在页面内查找属性 DefaultViewModel。

    此外,DataContext 是可继承的依赖属性,因此子元素将自动从其父页面继承 DataContext。为了解决任何绑定问题,WPF 绑定引擎会在其 DataContext 中查找属性,除非您使用 RelativeSource 标记扩展明确要求它查看其他位置。


    d:DataContext仅用于设计模式,而DataContext用于在运行时解析绑定 >.

    使用 d:DataContext 您可以提供虚拟 DataContext,Designer View 将使用它来为您提供页面的实际外观。 (用于设计时数据绑定)。

    【讨论】:

      猜你喜欢
      • 2011-06-07
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 2014-04-05
      • 1970-01-01
      相关资源
      最近更新 更多