WPF学习笔记11. Binding (4)
2010-10-11 16:33:44 来源:本站整理当然,我们可以直接在 XAML 中设置,而不是编写程序代码。
<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"
xmlns:model="clr-namespace:System.ComponentModel;assembly=WindowsBase"
Title="Window1">
<Window.Resources>
<my:PersonalList x:Key="personals" >
<my:Personal Name="Tom" Age="15" Sex="Male" />
<my:Personal Name="Mary" Age="11" Sex="Female" />
<my:Personal Name="Jack" Age="12" Sex="Male" />
</my:PersonalList>
<CollectionViewSource x:Key="cvs" Source="{StaticResource personals}">
<CollectionViewSource.SortDescriptions>
<model:SortDescription PropertyName="Age" />
<model:SortDescription PropertyName="Sex" Direction="Descending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Window.Resources>
<Grid>
<StackPanel DataContext="{StaticResource cvs}">
<ListBox x:Name="listbox1" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" />
<TextBlock>,</TextBlock>
<TextBlock Text="{Binding Path=Age}" />
<TextBlock>,</TextBlock>
<TextBlock Text="{Binding Path=Sex}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Grid>
</Window>
需要注意的地方包括:
引入了 xmlns:model="clr-namespace:System.ComponentModel;assembly=WindowsBase" 命名空间。
使用 CollectionViewSource 在资源中定义视图排序条件,注意使用 Source 属性绑定到 personals 资源。
目标对象数据源(DataContext)绑定到视图(cvs)而不是数据源(personals)。
(2) 分组
CollectionViewSource.GroupDescriptions 属性用来控制对数据源进行分组。
Window1.xaml.cs
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
var personals = this.FindResource("personals");
var view = CollectionViewSource.GetDefaultView(personals);
view.GroupDescriptions.Add(new PropertyGroupDescription("Sex"));
}
}
按性别进行分组,只是输出结果没啥直观效果。
更多精彩
赞助商链接