有人能看到我需要改变的地方吗?我正在显示AddressTypeClass项的observablecollection。对象项显示在列表框中而不是数据中。我可以在调试模式下看到对象中的数据。
XAML.CS文件:
DataContext MyTableDataContext = new MyTableDataContext();
ObservableCollection<AddressTypeClass> theOC = new ObservableCollection<AddressTypeClass>(new MyTableDataContext().AddressTypes.AsEnumerable()
.Select(lt => new AddressTypeClass
{
AddressTypeID = lt.AddressTypeID,
AddressType = lt.AddressType,
})
.ToList());
this.listBox1.ItemsSource = theOC;
XAML文件:
<ListBox Name="listBox1" Margin="8" Height ="200" Width ="150" FontSize="12" Foreground="#FF2F3806" ItemsSource="{Binding AddressType}" IsSynchronizedWithCurrentItem="True" >
</ListBox>
答案 0 :(得分:0)
您需要将ItemTemplate添加到ListBox,例如
<ListBox Name="listBox1" Margin="8" Height ="200" Width ="150" FontSize="12" Foreground="#FF2F3806" ItemsSource="{Binding AddressType}" IsSynchronizedWithCurrentItem="True" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=AddressType}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 1 :(得分:0)
您可以使用我的ObservableComputations库来完善您的代码。在您的代码中,每次MyTableDataContext.AddressTypes dbSet(我假设您正在使用EntityFramework)更改(新项或删除)或属性(AddressType.AddressTypeID,AddressType.AddressType)更改时,都手动更新OC。使用AddressType可以自动化该过程:
DataContext MyTableDataContext = new MyTableDataContext();
ObservableCollection<AddressTypeClass> theOC = MyTableDataContext.AddressTypes.Local
.Selecting(lt => new AddressTypeClass
{
AddressTypeID = lt.AddressTypeID,
AddressType = lt.AddressType,
});
this.listBox1.ItemsSource = theOC;
theOC是ObservableCollection,它反映了上面代码中提到的MyTableDataContext.AddressTypes.Local集合和属性中的所有更改。确保上面代码中提到的所有属性都通过INotifyProperytChanged界面通知更改。