我正在尝试绑定2个表中的列表框。这两个表是相关的。
(windows phone project)
XAML:
<ListBox Name="LstOrders" ItemsSource="{Binding}" Margin="12,11,12,12" toolkit:TiltEffect.IsTiltEnabled="True" Height="643">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0">
<TextBlock Text="{Binding refe}"
Tag="{Binding idOrder}"
Margin="0,0,0,0"
FontSize="{StaticResource PhoneFontSizeExtraLarge}"
FontFamily="{StaticResource PhoneFontFamilySemiLight}"/>
<TextBlock Text="{Binding tipo}"
Margin="0,0,0,0"
Foreground="{StaticResource PhoneSubtleBrush}"
FontSize="{StaticResource PhoneFontSizeNormal}"/>
<TextBlock Text="{Binding country}"
Margin="0,0,0,0"
Foreground="{StaticResource PhoneSubtleBrush}"
FontSize="{StaticResource PhoneFontSizeNormal}"
FontFamily="{StaticResource PhoneFontFamilySemiBold}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
C#
实施例
using (ordersDBDataContext miDataContext = new ordersDBDataContext("Data Source='isostore:/mydatabase.sdf'"))
{
var _lista = from p in miDataContext.orders
join t in miDataContext.tipos on p.idTipo equals t.idTipo
orderby p.refe
where p.idCliente == _idCli
select new
{
p.refe, p.country,p.idOrder,t.tipo
};
this.LstOrders.ItemsSource = _lista;
}
RESULT
没有显示任何数据。出了什么问题?
iF我这样做我可以看到_lista包含正确的数据:
foreach (var rr in _lista)
{
MessageBox.Show(rr.tipo);
}
答案 0 :(得分:1)
您正在处理DataContext(正确),但这意味着当执行_lista查询时,DataContext将不再有效,并且会出现异常。在某些情况下,WPF无助于吞下异常,因此您可能没有看到异常。
解决方案是使用:
this.LstOrders.ItemsSource = _lista.ToList();
并从xaml中移除ItemsSource={Binding}
或者将绑定留在并使用
this.LstOrders.DataContext = _lista.ToList();
另请参阅Silverlight 4 Data Binding with anonymous types,这可能与您的问题有关。
答案 1 :(得分:0)
我不知道您的代码段的上下文,但我猜你可能需要调用
this.LstOrders.Items.Refresh();
我无法准确解释为什么我不熟悉WPF,但在winforms中它将是一个DataBind()。