标签:style blog http color 使用 os
功能描述:一级菜单省份 联动显示省份下的城市
直接上代码
public class City
{
public string Num { get; set; }
public string Name { get; set; }
}
public class Province
{
public string ProvinceName { get; set; }
public ObservableCollection Citys { get; set; }
}
public class ProvinceList : ObservableCollection
{
public ProvinceList()
{
ObservableCollection province1 = new ObservableCollection();
province1.Add(new City { Num = "0374", Name = "郑州" });
province1.Add(new City { Num = "0377", Name = "南阳" });
province1.Add(new City { Num = "0373", Name = "新乡" });
ObservableCollection province2 = new ObservableCollection();
province2.Add(new City { Num = "0311", Name = "石家庄" });
province2.Add(new City { Num = "0312", Name = "保定" });
province2.Add(new City { Num = "0318", Name = "衡水" });
province2.Add(new City { Num = "0319", Name = "邢台" });
ObservableCollection province3 = new ObservableCollection()
{
new City(){Num="0731",Name="长沙"},
new City(){Num="0733",Name="株洲"}
};
this.Add(new Province() { ProvinceName = "河南省", Citys = province1 });
this.Add(new Province() { ProvinceName = "河北省", Citys = province2 });
this.Add(new Province() { ProvinceName = "湖南省", Citys = province3 });
}
protected override void OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e)
{
base.OnPropertyChanged(e);
}
protected override void OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
base.OnCollectionChanged(e);
}
}
View Code
这是数据源的代码
主要是省份列表类 继承 ObservableCollection泛型类 这个类有两个两种通知:
public virtual event NotifyCollectionChangedEventHandler CollectionChanged; 当集合中的某个项更改或者整个集合更改时发生
protected virtual event PropertyChangedEventHandler PropertyChanged; 当集合中单个项的属性更改时发生
意思就是当数据源集合改变时或者集合里面的某个属性改变时 进行通知前台显示
前台代码:
"prolist"/>
"ProCityList"
Source="{StaticResource prolist}"/>
"cityList">
"50"
Orientation="Horizontal">
"50"
Width="100"
Text="{Binding Num}"/>
"50"
Width="120"
Text="{Binding Name}"/>
View Code
初始化省份列表的数据源,定义显示城市的列表的每一项的数据模板
注意CollectionViewSource 之所以能分层绑定 多绑定一级 就是因为CollectionViewSource
MSDN对CollectionViewSource的解释
CollectionViewSource 允许使用 XAML 代码设置将这些设置传递到基础视图的常用 CollectionView 属性。 CollectionViewSource 具有一个保存实际视图的 View 属性和一个保存源集合的 Source 属性。
可以将集合视图视为位于绑定源集合之上的一个层,您可以通过它使用排序、筛选和分组查询来导航和显示集合,所有这些操作都无需操作基础源集合本身。 如果源集合实现了INotifyCollectionChanged 接口,则 CollectionChanged 事件引发的更改将传播到视图。
由于视图不会更改基础源集合,因此每个源集合可以有多个关联的视图。 例如,您可以有一个 Task 对象的集合。 通过使用视图,可以通过多种不同的方式来显示相同数据。 例如,您可能希望在页面左侧显示按优先级排序的任务,而在页面右侧显示按区域分组的任务。
具体显示的代码:
"ContentPanel" DataContext="{Binding Source={StaticResource ProCityList}}" Grid.Row="1" Margin="12,0,12,0">
"300"
Height="50"
FontSize="36"
Text="请选择省份:"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Margin="10,30,0,0"/>
"lb1"
Height="141"
Width="156"
DisplayMemberPath="ProvinceName"
ItemsSource="{Binding}"
Margin="40,69,260,0"
HorizontalAlignment="Center"
VerticalAlignment="Top" FontSize="32" />
"62"
Width="111"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{Binding Path=ProvinceName}"
Foreground="Aqua" Margin="12,210,0,0" FontSize="32" />
"50"
HorizontalAlignment="Right"
Text="城市列表"
VerticalAlignment="Top" Margin="0,210,169,0" Width="158" FontSize="32" />
"50"
Width="120"
Text="区号" Margin="6,278,330,279" FontSize="32" />
"50"
Width="98"
Text="城市名" Margin="0,278,260,279" HorizontalAlignment="Right" FontSize="32" />
"lb2"
Height="211"
VerticalAlignment="Top"
ItemsSource="{Binding Path=Citys}"
ItemTemplate="{StaticResource cityList}" FontSize="32" Margin="0,328,0,0" />
"tb4" Foreground="White" Text="{Binding Path=Citys.Count}" Width="200" Margin="129,563,127,10"/>
View Code
在这段代码中如果把Grid的DataContent直接写成ObservableCollection泛型集合对象 下面的城市列表绑定就不会显示
最后有一个问题就是我想要再往下面绑定 绑定地级市下面的县和县级市 搞了半天没有实现
经过尝试 在wpf中可以这样写Button Content="{Binding /City/lCity}" /> 可以指定下一级的数据绑定 可以一直往下一级绑定 但是windowsphone没有这种写法 所以windowsphone只能绑定一级
windowsphone 中CollectionViewSource和ObservableCollection的使用,搜素材,soscw.com
windowsphone 中CollectionViewSource和ObservableCollection的使用
标签:style blog http color 使用 os
原文地址:http://www.cnblogs.com/zhan/p/3811500.html