"{binding}和{binding Account}有什么区别?" (注意:这是一个提问标题,不需要回答。)

4

我对{binding}和{binding Account}感到困惑。什么时候只使用简单的{binding},什么时候使用带有属性名称的binding。在下面的代码中,绑定发生在Content="{Binding}"处。

 <Border Grid.Row="1" Grid.Column="0"
         Style="{StaticResource MainBorderStyle}" 
         Background="{StaticResource ResourceListGradientBrush}"
         BorderThickness="0,0,1,1"
         Padding="0">
     <StackPanel>
         <HeaderedContentControl 
             Content="{Binding}"
             ContentTemplate="{StaticResource CommandsTemplate}"/>
     </StackPanel>
 </Border>

以下代码绑定发生在哪里?
Text="{Binding Path=Name, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"/>

所以我想了解它们的用途和区别。提前感谢您。
2个回答

4

{Binding}将简单地绑定到在DataContext中设置的实际对象。 {Binding Account}将绑定到该对象上的Account属性。

在您的情况下,如果您针对根级别的DataContext设置了一个ViewModel,那么Account将是ViewModel上名为Account 的属性。

您有的地方:

<HeaderedContentControl
            Content="{Binding}"
            ContentTemplate="{StaticResource CommandsTemplate}"/>

这样做的作用仅是将HeaderedContentControl内容设置为ViewModel,前提是在WindowUserControl的代码后台中有类似于此的东西。

 DataContext = yourViewModel;

数据上下文和项源是否相同?项源的代码在这里:<wpftoolkit:DataGrid Grid.Row="1" ItemsSource="{Binding Account}"。 - prjndhi
不,DataContext 可以在树上的任何控件上使用。通常情况下,如果您正在使用 mvvm,则会在 Window 或根级别控件/用户控件上设置它。任何 mvvm 示例都会设置它。然后,在子控件中,当您有 {Binding Account} 时,它将在可视树中向上搜索第一个针对 DataContext 设置的对象,然后绑定到该属性。在这种情况下,它将是 Account 属性。 - aqwert

3

{Binding} 将绑定到当前DataContext

{Binding Account} 将绑定到当前DataContext上的Account属性


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接