C# 将项目相关变量绑定到longlistselector(WP8)中的listheader
我是Windows Phone开发的新手,目前在WP8中使用LongListSelector时遇到了一个问题,我不知道如何继续实现我想要的结果 我像往常一样使用它来显示项目列表。使用的类包含5项,其中一项是浮点值。我想在列表标题中显示列表中包含的所有正浮点值的总和,但我不知道如何做到这一点 除了原始绑定之外,我还尝试将另一个变量(sum的结果)具体绑定到listheader,或者在包含sum结果的类中添加另一项(因此在每个列表项的整个列表中重复),但没有成功 我想这是一个非常基本的功能(例如,计算和显示列表中元素的数量),但我不知道如何做到这一点 编辑:我原以为显示我的代码不会有什么帮助,但事实就是这样。(我删除了不相关的格式) XAMLC# 将项目相关变量绑定到longlistselector(WP8)中的listheader,c#,list,windows-phone-7,xaml,header,C#,List,Windows Phone 7,Xaml,Header,我是Windows Phone开发的新手,目前在WP8中使用LongListSelector时遇到了一个问题,我不知道如何继续实现我想要的结果 我像往常一样使用它来显示项目列表。使用的类包含5项,其中一项是浮点值。我想在列表标题中显示列表中包含的所有正浮点值的总和,但我不知道如何做到这一点 除了原始绑定之外,我还尝试将另一个变量(sum的结果)具体绑定到listheader,或者在包含sum结果的类中添加另一项(因此在每个列表项的整个列表中重复),但没有成功 我想这是一个非常基本的功能(例如,计
类定义
public class resume
{
public string Nom { get; set; }
public double Solde { get; set; }
public string Depuis { get; set; }
public string DerniereConnexion { get; set; }
public resume(string nom, double solde, string depuis, string derniereconnexion)
{
this.Nom = nom;
this.Solde = solde;
this.Depuis = depuis;
this.DerniereConnexion = derniereconnexion;
}
}
public class total
{
public double Total { get; set; }
public double calculTotal(List<resume> soldes)
{
double total = new double();
foreach (resume solde in soldes)
{
if (solde.Solde > 0)
total += solde.Solde;
}
return total;
}
public total(double Dtotal)
{
this.Total = Dtotal;
}
}
公开课恢复
{
公共字符串Nom{get;set;}
公共双解{get;set;}
公共字符串Depuis{get;set;}
公共字符串{get;set;}
公开恢复(字符串名称、双解、字符串解压、字符串解压)
{
这个.Nom=Nom;
这个.Solde=Solde;
this.Depuis=Depuis;
this.derniereconnection=derniereconnection;
}
}
公共班级总数
{
公共双总计{get;set;}
公共双计算器(列表soldes)
{
双倍总计=新的双倍();
foreach(在焊料中恢复焊料)
{
如果(solde.solde>0)
总+=索尔德。索尔德;
}
返回总数;
}
公共总计(双倍总)
{
此。总计=总数据;
}
}
和代码隐藏
public MainPage()
{
InitializeComponent();
List<resume> soldes = new List<resume>();
Donnees MainData = new Donnees();
soldes = MainData.RefreshResume(soldes); // A method that basically add items to the list
total SommeTotale = new total(1);
SommeTotale.Total = SommeTotale.calculTotal(soldes);
ListeSolde.ItemsSource = soldes;
}
public主页()
{
初始化组件();
List soldes=新列表();
Donnees MainData=新Donnees();
soldes=MainData.RefreshResume(soldes);//一种基本上向列表中添加项的方法
总数=新总数(1);
SommeTotale.Total=SommeTotale.calculTotal(soldes);
ListSolde.ItemsSource=soldes;
}
这当然不起作用(就列表标题而言),这就是我要做的事情这就是我如何将ViewModel中的其他数据绑定到LongListSelector.ListHeader的标题
<phone:LongListSelector.ListHeaderTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="2" Foreground="DarkViolet"
Text="{Binding ElementName=LayoutRoot, Path=DataContext.AddressBookList.Count}" />
</Grid>
</DataTemplate>
</phone:LongListSelector.ListHeaderTemplate>
ListHeader属性直接绑定到LongListSelector的DataContext。这与LongListSelector中包含的项不同。其中包含的项绑定到ItemSource中的每个项。显示ListHeader的最佳方法之一是创建一个对象,其中包含LongListSelector的数据
public class ResumeContainer
{
public double SommeTotale { get { return Resumes.Sum(r => r.Value); } }
public IEnumerable<Resume> Resumes { get; set; }
}
公共类恢复容器
{
公共双sometotale{get{return Resumes.Sum(r=>r.Value);}
公共IEnumerable恢复{get;set;}
}
您可以将LongListSelector的DataContext设置为ResumeContainer的实例。这最好是ViewModel的属性。您需要将xaml更改为
<phone:LongListSelector x:Name="ListeSolde" ItemsSource="{Binding Resumes}">
然后,您的代码将更改为
List<resume> soldes = new List<resume>();
Donnees MainData = new Donnees();
soldes = MainData.RefreshResume(soldes);
ListeSolde.DataContext = new ResumeContainer { Resumes = soldes };
List soldes=new List();
Donnees MainData=新Donnees();
soldes=MainData.RefreshResume(soldes);
ListSolde.DataContext=new ResumeContainer{Resumes=soldes};
欢迎使用堆栈溢出!你能给我们看一下你的密码吗?好的。但我认为这不会有什么帮助,因为我的问题似乎很一般。
List<resume> soldes = new List<resume>();
Donnees MainData = new Donnees();
soldes = MainData.RefreshResume(soldes);
ListeSolde.DataContext = new ResumeContainer { Resumes = soldes };