MasterDetail主从绑定
实现效果:
关键词:
- IsSynchronizedWithCurrentItem
xaml代码:
<DockPanel DataContext="{Binding Source={StaticResource MyList}}">
<StackPanel>
<Label>My Soccer Leagues</Label>
<ListBox ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="true"/>
</StackPanel>
<StackPanel>
<Label Content="{Binding Path=Name}"/>
<ListBox ItemsSource="{Binding Path=Divisions}"
IsSynchronizedWithCurrentItem="true"/>
</StackPanel>
<StackPanel>
<Label Content="{Binding Path=Divisions/Name}"/>
<ListBox ItemsSource="{Binding Path=Divisions/Teams}"/>
</StackPanel>
</DockPanel>
扩展:
- 如果 SelectedItem 始终与 ItemCollection 中的当前项保持同步,则为 true;如果 SelectedItem 从不与当前项保持同步,则为 false;如果 SelectedItem 只有在 Selector 使用 CollectionView 时才与当前项保持同步,则为 null。默认值为null。
- 可以将 IsSynchronizedWithCurrentItem 属性设置为 true 以确保选定的项始终对应于 ItemCollection 中的 CurrentItem 属性。 例如,假定有两个 ListBox 控件,这两个控件的 ItemsSource 属性设置为相同源。对这两个列表框将 IsSynchronizedWithCurrentItem 设置为 true 以确保在每个 ListBox 中的选定项相同。
主从绑定XML数据源
实例与上述效果以下,但是绑定源为XML
<XmlDataProvider x:Key="MyList" Source="Data\Leagues.xml"
XPath="Leagues/League"/>
xaml界面:
<DockPanel DataContext="{Binding Source={StaticResource MyList}}">
<StackPanel>
<Label>My Soccer Leagues</Label>
<ListBox ItemsSource="{Binding}"
ItemTemplate="{StaticResource DataTemplateX}"
IsSynchronizedWithCurrentItem="true"/>
</StackPanel>
<StackPanel>
<Label Content="{Binding XPath=@name}"/>
<ListBox Name="divisionsListBox"
ItemsSource="{Binding XPath=Division}"
ItemTemplate="{StaticResource DataTemplateX}"
IsSynchronizedWithCurrentItem="true"/>
</StackPanel>
<StackPanel>
<Label Content="{Binding XPath=@name}"/>
<ListBox DataContext="{Binding ElementName=divisionsListBox,
Path=SelectedItem}"
ItemsSource="{Binding XPath=Team}"
ItemTemplate="{StaticResource DataTemplateX}"/>
</StackPanel>
</DockPanel>
第二个ListBox中:
Label Content="{Binding XPath=@name}"中Content绑定的为当前数据源选定项的name特性,路径使用XPath,值表示为@name。
ItemsSource="{Binding XPath=Division}"中绑定源路径XPath值设为Division节点。
第三个ListBox中:
DataContext="{Binding ElementName=divisionsListBox,指数据上下文重新设为第二个ListBox选定的数据。ItemsSource绑定路径设为Team节点。数据模板显示为name特性的值
Path=SelectedItem}"
XML中绑定数据的模板须有以下,
<DataTemplate x:Key="DataTemplateX">
<TextBlock Text="{Binding XPath=@name}" />
</DataTemplate>
扩展:
- 如果绑定源是 XML 数据而不是公共语言运行时 (CLR) 对象,则使用 XPath 属性(而不是 Path 属性)来指示要使用的绑定源的值的路径。
- 通过设置 XPath 属性,将创建一个 XPath 查询来选择节点或节点集合。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。