我看到DataGrid数据绑定sytax如下:
ItemsSource="{Binding Path=ListDataColumns, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged}"
更完整的代码是:
<DataGrid KeyboardNavigation.ControlTabNavigation="Local" KeyboardNavigation.IsTabStop="False" DataContext="{Binding}"
ItemsSource="{Binding Path=ListDataColumns, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False" x:Name="DataGridColumnConfig" VerticalAlignment="Top" AllowDrop="True"
IsSynchronizedWithCurrentItem="True" CanUserSortColumns="False" CanUserDeleteRows="False"
CanUserAddRows="False" GridLinesVisibility="All" SelectedItem="{Binding Path=SelectedItem}" SelectedIndex="{Binding Path=SelectedItemIndex}">
我认为代码绑定到名为“ListDataColumns”的属性。
如何从ItemSource确定哪个对象被绑定?
答案 0 :(得分:1)
要完全回答您的问题,我们需要您提供更多信息。但是,根据您提供的内容(以及使用简化的XAML示例),我们可以告诉您以下内容:
<DataGrid DataContext="{Binding}" ItemsSource="{Binding Path=ListDataColumns,
Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True,
UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding Path=SelectedItem}"
SelectedIndex="{Binding Path=SelectedItemIndex}" ... />
DataContext
设置为{Binding}
,与{Binding Path=.}
相同,表示我们绑定到当前Binding.Source
...换句话说,其中一个此控件的父级应该将对象的实例设置为其DataContext
,并且此控件将共享该对象,并且可以访问相同的属性。 ItemsSource
属性设置为{Binding Path=ListDataColumns ...}
,与{Binding ListDataColumns ...}
相同,这意味着它将查看设置为DataContext
(父项)的任何对象对于名为ListDataColumns
的属性。SelectedItem
属性设置为{Binding Path=SelectedItem}
,与{Binding SelectedItem}
相同,这意味着它将查看设置为DataContext
(父项)的任何对象对于名为SelectedItem
的属性。SelectedIndex
属性设置为{Binding Path=SelectedItemIndex}
,与{Binding SelectedItemIndex}
相同,这意味着它将查看设置为DataContext
(父项)的任何对象对于名为SelectedItem
的属性。这就是您可以从XAML示例中获取的所有内容(忽略其他Binding
属性)。但是,对于学习XAML和WPF的用户,以下是MSDN上一些非常有用的链接,以获取有关属性路径语法的帮助: