C# 如何从父对象读取属性';什么是数据上下文?
如果我遇到这样的情况:C# 如何从父对象读取属性';什么是数据上下文?,c#,wpf,mvvm,C#,Wpf,Mvvm,如果我遇到这样的情况: <Parent DataContext="..."> <Child DataContext="..." /> </Parent> 子对象如何访问父对象DataContext上的属性?假设父对象的DC具有属性Foo,则读取Foo.Bar: DataContext="{Binding Foo}" Text="{Binding Bar}" 或 假设父对象的DC具有属性Foo,则要读取Foo.Bar: DataContext="
<Parent DataContext="...">
<Child DataContext="..." />
</Parent>
子对象如何访问父对象DataContext上的属性?假设父对象的DC具有属性Foo,则读取Foo.Bar:
DataContext="{Binding Foo}" Text="{Binding Bar}"
或
假设父对象的DC具有属性Foo,则要读取Foo.Bar:
DataContext="{Binding Foo}" Text="{Binding Bar}"
或
通过使用with模式:
通过使用with模式:
这完全取决于您希望如何访问该属性,以及它的目标位置。您可以使用
RelativeSource
直接从XAML访问它:
<Parent DataContext="{...}">
<Child DataContext="{...}"
TargetProperty="{Binding
RelativeSource={RelativeSource AncestorType=Parent},
Path=DataContext.Property}"
/>
</Parent>
这假设您拥有或可以创建子对象上的依赖项属性TargetProperty
可选地,如果您想从孩子的视图模型中访问父视图模型的属性,那么您可能需要考虑将引用、封装的引用或弱引用传递给子视图模型。
这完全取决于您想要如何访问该属性以及它的目标。您可以使用
RelativeSource
直接从XAML访问它:
<Parent DataContext="{...}">
<Child DataContext="{...}"
TargetProperty="{Binding
RelativeSource={RelativeSource AncestorType=Parent},
Path=DataContext.Property}"
/>
</Parent>
这假设您拥有或可以创建子对象上的依赖项属性TargetProperty
可选地,如果您想从子视图模型访问父视图模型的属性,那么您可能需要考虑将引用或封装引用或弱引用传递给子视图模型。