Linqから単一の選択リストボックスを作成しようとしていますが、ローカルデータベースに保存されている対応する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;
}
}
Xamlコード:
<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」がリストに表示されます。私はこれについてグーグルのウォークスルーとチュートリアルを試しましたが、解決策を思い付くことができませんでした。
さらに、日付と時刻を処理する特別な方法はありますか?
任意の提案をいただければ幸いです。