WEB开发网
开发学院WEB开发ASP.NET WPF学习笔记9. Binding (2) 阅读

WPF学习笔记9. Binding (2)

 2010-10-11 16:23:12 来源:本站整理   
核心提示:为了使用 Personal 和 PersonalList,我们引入了一个 CLR Namespace,WPF学习笔记9. Binding (2)(2),在主从结构 (Master-Detail) 显示中,我们通常要实现 "选择项跟踪" 功能,就像真正的主从表显示那样相互影响,<Windowx:

为了使用 Personal 和 PersonalList,我们引入了一个 CLR Namespace。

在主从结构 (Master-Detail) 显示中,我们通常要实现 "选择项跟踪" 功能,也就是说当我们选中主表的某个记录时,其他细节控件要同步刷新该记录的细节内容。

<Window x:Class="Learn.WPF.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:my="clr-namespace:Learn.WPF"
  Title="Window1">
  <Window.Resources>
    <my:PersonalList x:Key="personals" >
      <my:Personal Name="Tom" Age="10" Sex="Male" />
      <my:Personal Name="Mary" Age="15" Sex="Female" />
      <my:Personal Name="Jack" Age="12" Sex="Male" />
    </my:PersonalList>
  </Window.Resources>
  <Grid>
    <StackPanel>
      <ListBox x:Name="listbox1"
        ItemsSource="{Binding Source={StaticResource personals}}"
        DisplayMemberPath="Name"
        IsSynchronizedWithCurrentItem="True">
      </ListBox>

      <Label x:Name="lblName" Content="{Binding Source={StaticResource personals}, Path=Name}" />
      <Label x:Name="lblAge" Content="{Binding Source={StaticResource personals}, Path=Age}"/>
      <Label x:Name="lblSex" Content="{Binding Source={StaticResource personals}, Path=Sex}"/>
    </StackPanel>
  </Grid>
</Window>

我们将 ListBox.IsSynchronizedWithCurrentItem 置为 True,这样当我们改变 ListBox 选择项时,下面三个标签会自动同步变更为被选中记录的信息。

当然,我们还可以使用多个 ListBox,就像真正的主从表显示那样相互影响。

<Window x:Class="Learn.WPF.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:my="clr-namespace:Learn.WPF"
  Title="Window1">
  <Window.Resources>
    <my:PersonalList x:Key="personals" >
      <my:Personal Name="Tom" Age="10" Sex="Male" />
      <my:Personal Name="Mary" Age="15" Sex="Female" />
      <my:Personal Name="Jack" Age="12" Sex="Male" />
    </my:PersonalList>
  </Window.Resources>
  <Grid>
    <StackPanel>
      <ListBox x:Name="listbox1"
        ItemsSource="{Binding Source={StaticResource personals}}"
        DisplayMemberPath="Name"
        IsSynchronizedWithCurrentItem="True">
      </ListBox>

      <ListBox x:Name="listbox2"
        ItemsSource="{Binding Source={StaticResource personals}}"
        DisplayMemberPath="Age"
        IsSynchronizedWithCurrentItem="True">
      </ListBox>
    </StackPanel>
  </Grid>
</Window>

有一点需要说明,IsSynchronizedWithCurrentItem 不支持多项选择同步。

Tags:WPF 学习 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接