Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataContext=";{Binding}";什么意思?_C#_Wpf_Xaml - Fatal编程技术网

C# DataContext=";{Binding}";什么意思?

C# DataContext=";{Binding}";什么意思?,c#,wpf,xaml,C#,Wpf,Xaml,我试图找出HeaderedContentControl中的项在一个不是我的项目中来自何处。代码如下: <HeaderedContentControl Content="{Binding Path=Workspaces}" ContentTemplate="{StaticResource WorkspacesTemplate}" Header="Workspaces" Style

我试图找出HeaderedContentControl中的项在一个不是我的项目中来自何处。代码如下:

        <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重置为原始值。