Silverlight模拟WPF的TemplateSelector,以实现动态显示不同column
2009-11-10 15:14
597 查看
代码下载:
Service:WcfService7.zip
Silverlight:DynamicGridViewDemo.zip
思路简单介绍如下:
1.AttachedBehavior结合Resource来为Column中的列添加事件
2.使用DP,来封装多个GridView:
相应的XAML:
Service:WcfService7.zip
Silverlight:DynamicGridViewDemo.zip
思路简单介绍如下:
1.AttachedBehavior结合Resource来为Column中的列添加事件
2.使用DP,来封装多个GridView:
public class FormFieldTemplateSelector : UserControl { public DataTemplate FirstTemplate { get; set; } public DataTemplate SecondTemplate { get; set; } public static readonly DependencyProperty FieldTypeProperty = DependencyProperty.Register("FieldType", typeof(string), typeof(FormFieldTemplateSelector), new PropertyMetadata(string.Empty)); public string FieldType { get { return (string)GetValue(FieldTypeProperty); } set { SetValue(FieldTypeProperty, value); } } public FormFieldTemplateSelector() { Loaded += new RoutedEventHandler(OnLoaded); } private void OnLoaded(object sender, RoutedEventArgs e) { string fieldType = FieldType; if (fieldType == "1") { Content = FirstTemplate.LoadContent() as UIElement; } else if (fieldType == "2") { Content = SecondTemplate.LoadContent() as UIElement; } else { Content = null; } } }
相应的XAML:
<local:FormFieldTemplateSelector Grid.Column="1" FieldType="{Binding CarriedNO}" Margin="0,2,0,2"> <local:FormFieldTemplateSelector.FirstTemplate> <DataTemplate> <data:DataGrid ItemsSource="{Binding FlightList, Mode=OneWay}" SelectedItem="{Binding SelectedFlightInfo, Mode=TwoWay}" Margin="24,29,54,33" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" AutoGenerateColumns="False" IsReadOnly="True" > <data:DataGrid.Columns> <data:DataGridTemplateColumn Header="FlightNO" Width="60" SortMemberPath="FlightNO" > <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Tag="FlightNO" Text="{Binding FlightNO}" /> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn> <data:DataGridTextColumn Header="Date" Width="58" Binding="{Binding Date}" /> <data:DataGridTemplateColumn Header="ORIG" Width="58" SortMemberPath="ORIG"> <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Tag="ORIG" Text="{Binding ORIG}" local:MouseLeftButtonUp.Command="{Binding Path=Value, Source={StaticResource MouseLeftButtonUpCommand}}" /> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn> </data:DataGrid.Columns> </data:DataGrid> </DataTemplate> </local:FormFieldTemplateSelector.FirstTemplate> <local:FormFieldTemplateSelector.SecondTemplate> <DataTemplate> <data:DataGrid ItemsSource="{Binding FlightList, Mode=OneWay}" SelectedItem="{Binding SelectedFlightInfo, Mode=TwoWay}" Margin="24,29,54,33" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" AutoGenerateColumns="False" IsReadOnly="True" > <data:DataGrid.Columns> <data:DataGridTemplateColumn Header="FlightNO" Width="60" SortMemberPath="FlightNO" > <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Tag="FlightNO" Text="{Binding FlightNO}" /> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn> <data:DataGridTextColumn Header="Date" Width="58" Binding="{Binding Date}" /> <data:DataGridTemplateColumn Header="DEST" Width="58" SortMemberPath="DEST"> <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Tag="DEST" Text="{Binding DEST}" local:MouseLeftButtonUp.Command="{Binding Path=Value, Source={StaticResource MouseLeftButtonUpCommand}}" /> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn> </data:DataGrid.Columns> </data:DataGrid> </DataTemplate> </local:FormFieldTemplateSelector.SecondTemplate> </local:FormFieldTemplateSelector>
相关文章推荐
- c#第一篇 在WPF的window窗体中使用httpwebrequest实现模拟登陆网页,并在webbroser控件中显示
- WPF:DataTemplateSelector设置控件不同的样式
- android实现界面左右滑动(GridView动态设置item,支持每个item按某个属性排序来显示在不同的界面)
- Silverlight下,另一种比较土的办法,来动态加载不同的Column
- WPF:DataTemplateSelector设置控件不同的样式
- WPF中的DataGridTemplateColumn实现点击列标题排序
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
- silverlight中颜色转换,实现DataGrid 行不同颜色显示
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
- android实现界面左右滑动(GridView动态设置item,支持每个item按某个属性排序来显示在不同的界面)
- 利用事件-委托,实现主-子窗体动态显示,不同菜单栏,不同工具栏。(类似SQL Server 2000 企业管理器)
- android实现界面左右滑动(GridView动态设置item,支持每个item按某个属性排序来显示在不同的界面)
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(八) 完美实现A*寻径动态动画
- Silverlight使用DataGrid的模板列(DataGridTemplateColumn)实现类似TreeListView控件的效果
- js实现调用方法(函数)时可动态传入不同参数个数、模拟实现方法(函数)重载
- echarts实现一个页面同时显示多个不同形状的图表/动态往图表中存放数据
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
- 【原创源码】(01):利用事件-委托,实现主-子窗体动态显示,不同菜单栏,不同工具栏。(类似SQL Server 2000 企业管理器)
- WPF/Silverlight ListBox 数据横向显示的实现
- android实现界面左右滑动(GridView动态设置item,支持每个item按某个属性排序来显示在不同的界面)