目前为止,你已经看到一些示例将控件绑定到一个单独的对象。然而,更复 杂的使用是绑定到一个对象列表。例如,想象一下,我们的对象数据源可以创建 一个新类型表示Person对象的列表,正如示例4-19:
示例4-19
using System.Collections.Generic; // List<T>
namespace PersonBinding {
// XAML doesn't (yet) have a syntax
// for generic class instantiation
class People : List<Person> {}
}
我们可以挂起这个新的数据源列表,按照同样的方式绑定到它,就像绑定到 一个单独的对象数据源上,如示例4-20。
示例4-20
<!-- Window1.xaml -->
<?Mapping XmlNamespace="local" ClrNamespace="PersonBinding" ? >
<Window xmlns:local="local">
<Window.Resources>
<local:People x:Key="Family">
<local:Person Name="Tom" Age="9" />
<local:Person Name="John" Age="11" />
<local:Person Name="Melissa" Age="36" />
</local:People>
<local:AgeToForegroundConverter
x:Key="AgeToForegroundConverter" />
</Window.Resources>
<Grid DataContext="{StaticResource Family}">
<TextBlock >Name:</TextBlock>
<TextBox Text="{Binding Path=Name}" />
<TextBox
Text="{Binding Path=Age}"
Foreground="{Binding Path=Age, Converter=}" />
<Button >Birthday</Button>
</Grid>
</Window>
在示例4-20中,我们创建了一个People集合的示例而且通过三个Person对象 导入它。然而,运行它将会如图4-6。