我有一个要求,我必须显示不同的视图.i.e分组和非分组列表。我用了GridView。
我有两个来自视图模型的列表,一个是非分组视图的直接列表,另一个是分组视图的列表组。
<Grid >
<Grid.Resources>
<CollectionViewSource x:Name="MainGrps" ItemsPath="Items" IsSourceGrouped="True" />
</Grid.Resources>
<GridView x:Name="SharedGriidViewUI" ItemsSource="{Binding Source={StaticResource MainGrps}}"
HorizontalAlignment="Left" VerticalAlignment="Top" ItemTemplate="{StaticResource ItmTemplateTimeLine}">
<GridView.GroupStyle>
<GroupStyle HidesIfEmpty="False" HeaderTemplate="{StaticResource HdrTemplateTimeLine}"/>
</GridView.GroupStyle>
</GridView>
</Grid>
在XXAML中我只有一个GridView。首先我显示分组视图
MainGrps.Source = Lst_grp;
背后的代码
private void AppBarButton_Click_List(object sender, RoutedEventArgs e)
{
MainGrps.Source = null;
MainGrps.ItemsPath = null;
SharedGriidViewUI.ItemsSource = null;
MainGrps.Source = ((ExtraPageViewModel)this.DataContext).Lst_Videos ;
SharedGriidViewUI.ItemsSource = MainGrps.Source;
SharedGriidViewUI.ItemTemplate = ItmTemplateList;
}
它绝对正常。
现在我想点击应用栏按钮切换到其他视图。所以我确实喜欢这个
private void AppBarButton_Click_TimeLine(object sender, RoutedEventArgs e)
{
MainGrps.Source = null;
SharedGriidViewUI.ItemsSource = null;
MainGrps.Source = ((ExtraPageViewModel)this.DataContext).Lst_Grp;
MainGrps.ItemsPath = new PropertyPath("Items");
SharedGriidViewUI.ItemsSource = MainGrps.Source;
SharedGriidViewUI.ItemTemplate = ItmTemplateTimeLine;
}
这也很好。
现在点击AppBarButton我想再次显示Grouped View。我确实喜欢这个
try {
LegalView.ActiveViewIndex = 2;
String tw2 = TextBox3.Text;
SqlDataSource SqlDataSource2 = new SqlDataSource();
SqlDataSource2.ID = "SqlDataSource2";
this.Page.Controls.Add(SqlDataSource2);
SqlDataSource2.ConnectionString = System.Configuration.ConfigurationManager
.ConnectionStrings["constr"].ConnectionString;
SqlDataSource2.SelectParameters.Add("@tower", tw2);
SqlDataSource2.SelectCommand = "usp_select_legal1_data";
GVCaseTowerWise.DataSource = SqlDataSource2;
GVCaseTowerWise.DataBind();
if (GVCaseTowerWise.Rows.Count == 0) {
ScriptManager.RegisterClientScriptBlock(
this,
this.GetType(),
"alertMessage",
"alert('No cases for this tower exist in the database')",
true);
}
} catch (Exception ex) {
ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
"alertMessage", "alert('error while getting data')", true);
}
现在我无法看到列表。我得到Binding错误异常。
错误:BindingExpression路径错误:'Qts.Models.TimeLineGoup
上找不到'MediaId'属性错误:BindingExpression路径错误:'Qts.Models.TimeLineGoup上找不到'PictureTitle'属性 这意味着Xaml这次期待Grp Direct中的PictureTitle和MediaID而不是组中的Items属性。
所以请告诉我我哪里错了。我如何从cs文件绑定组。请建议或帮助我解决问题。
感谢和关心Sunil Kumar S C
答案 0 :(得分:0)
让它运转起来。 我将MainGrps.Source更改为MainGrps.Source.View; 像魅力一样工作。
MainGrps.Source =((ExtraPageViewModel)this.DataContext).Lst_Grp; SharedGriidViewUI.ItemsSource = MainGrps.Source.View;