我正在尝试从 Linq 创建一个选择列表框,但是,我在设置每个列表框项的 id 值时遇到问题,该列表框项的 id 具有保存在本地数据库中的相应 id。我有以下代码:
public void display_Tips()
{
//commented out to try MrMDavidson's approach.
// listBoxTipHistory.Items.Clear();
// IList<Tips> tips = this.get_Tips();
// foreach (Tips tip in tips)
// {
// ListBoxItem li1 = new ListBoxItem();
// li1.Content = tip.date.Day + "-" + tip.date.Month + "-" +
// tip.date.Year + "-" + tip.date.Hour + ":" +
// tip.date.Minute + " - " + tip.resturant + " - $" +
// tip.tip_amount + " - $" + tip.billTotal;
// listBoxTipHistory.Items.Add(li1);
// }
if (listBoxTipHistory.Items.Count > 0)
{
listBoxTipHistory.Items.Clear();
}
listBoxTipHistory.ItemsSource = get_Tips();
}
public IList<Tips> get_Tips()
{
IList<Tips> tips = null;
using (TipContext context = new TipContext(conString))
{
IQueryable<Tips> query =
(from c in context.TipTable
orderby c.date descending
select c);
tips = query.ToList();
}
return tips;
}
本地数据库表:
[Table]
public class Tips
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int tip_ID
{
get;
set;
}
[Column(CanBeNull = false)]
public float tip_amount
{
get;
set;
}
[Column]
public string resturant
{
get;
set;
}
[Column(CanBeNull = false)]
public DateTime date
{
get;
set;
}
}
Xml代码:
<ListBox SelectionChanged="showTipDetails" x:Name="listBoxTipHistory" Margin="6,3,0,0">
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding resturant}" />
<TextBlock Text="{Binding date}" />
<TextBlock Text="{Binding tip_amount}" />
</StackPanel>
</DataTemplate>
</ListBox >
我现在正在尝试重新编码以使用 MrMDavidson 的建议,但是,使用此当前代码会导致列表显示“AppName.Tips”而不是实际的列数据。我已经尝试在谷歌上搜索演练和教程,但是,我一直无法提出解决方案。
此外,是否有特殊的方法来处理日期和时间?
任何建议,将不胜感激。