C# DataContext=";{Binding}";什么意思?
我试图找出HeaderedContentControl中的项在一个不是我的项目中来自何处。代码如下:C# DataContext=";{Binding}";什么意思?,c#,wpf,xaml,C#,Wpf,Xaml,我试图找出HeaderedContentControl中的项在一个不是我的项目中来自何处。代码如下: <HeaderedContentControl Content="{Binding Path=Workspaces}" ContentTemplate="{StaticResource WorkspacesTemplate}" Header="Workspaces" Style
<HeaderedContentControl
Content="{Binding Path=Workspaces}"
ContentTemplate="{StaticResource WorkspacesTemplate}"
Header="Workspaces"
Style="{StaticResource MainHCCStyle}"
DataContext="{Binding}" // <--- this
/>
<DataTemplate x:Key="WorkspacesTemplate">
<TabControl
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource ClosableTabItemTemplate}"
Margin="4"
/>
如果看不到更多的代码,就很难确定,但是DataContext=“{Binding}”
通常是不必要的,因为当前绑定上下文中的任何对象都会自动将其DataContext
属性设置为与{Binding}
等效的属性
记住:
Property=“{Binding}”
表示“将this.Property
设置为this.DataContext
的评估值”
Property=“{Binding Path=subperty}”
表示“将this.Property
设置为this.DataContext.subperty
的评估值”
- 等
这意味着DataContext=“{Binding}”
意味着“将This.DataContext
设置为This.DataContext
”的评估值,这(在大多数情况下)是多余的 {Binding}
类似于绑定“this”或当前数据上下文-从父级分配或继承。为了更好地理解,{Binding}
的等价物是{Binding.}
或{Binding Path=.}
我对“在大多数情况下”很感兴趣。什么时候它不是冗余的?就其本身而言,我很确定它总是冗余的,但如果您包括转换器、更新触发器等,则存在一些有效的用例。要更改绑定的行为,最常见的用途是将从父控件继承重写的DataContext的控件上的DataContext重置为原始值。