加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – WPF Listview数据绑定到通用List,由WCF服务动态填充

发布时间:2020-12-16 00:12:36 所属栏目:百科 来源:网络整理
导读:在 WPF应用程序中,我有一个WCF服务,它从后端数据库动态填充通用List对象. 在这种情况下(在运行时创建列表),我可以将List项绑定到ListView对象项吗? 它是我的Web服务的数据合同: ....[DataContract]public class MeetList{ [DataMember] public string Meet
在 WPF应用程序中,我有一个WCF服务,它从后端数据库动态填充通用List对象.

在这种情况下(在运行时创建列表),我可以将List项绑定到ListView对象项吗?

它是我的Web服务的数据合同:

....
[DataContract]
public class MeetList
{
    [DataMember]
    public string MeetDate;
    [DataMember]
    public string MeetTime;
    [DataMember]
    public string MeetDescr;

 .....

 static internal List<MeetList> LoadMeetings(string dynamicsNavXml)
    {
        ...// Loads  XML stream into the WCF type
    }

在这个事件处理程序中,我读取了WCF服务并通过List对象循环:

private void AllMeetings()
    {
        Customer_ServiceClient service = new Customer_ServiceClient();
        foreach (MeetList meet in service.ReadMeetList())
        {
            ?????? = meet.MeetDate; // it's here that I bumped into a problem
            ?????? = meet.MeetTime; //
            ?????? = meet.MeetDescr;//
        }

    }

我的Listview XAML:

<Grid>
                                <ListView Height="100" Width="434" Margin="0,22,0" Name="lvItems" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" SelectionMode="Single">
                                    <ListView.View>
                                        <GridView>
                                            <GridViewColumn Header="Date" Width="100" HeaderTemplate="{StaticResource DateHeader}" CellTemplate="{DynamicResource DateCell}"/>
                                            <GridViewColumn Header="Time" Width="100" HeaderTemplate="{StaticResource TimeHeader}" CellTemplate="{DynamicResource TimeCell}"/>
                                            <GridViewColumn Header="Description" Width="200" HeaderTemplate="{StaticResource DescriptionHeader}" CellTemplate="{DynamicResource DescriptionCell}"/>
                                        </GridView>
                                    </ListView.View>
                                </ListView>
                            </Grid>

和ListView的数据模板:

<Window.Resources>
    <DataTemplate x:Key="DateHeader">
        <StackPanel Orientation="Horizontal">
            <TextBlock Margin="10,0" Text="Date" VerticalAlignment="Center" />
        </StackPanel>
    </DataTemplate>
    <DataTemplate x:Key="DateCell" DataType="Profile">
        <StackPanel Orientation="Horizontal">
            <TextBlock>
                    <TextBlock.Text>
                        <Binding Path="MeetDate" />
                    </TextBlock.Text>
            </TextBlock>
        </StackPanel>
    </DataTemplate>
......

在这种情况下(在运行时创建列表),我可以将我的通用List项绑定到ListView对象项?

我试图使用lvItems.ItemsSource = profiles;,但它在我的事件处理程序中不起作用

解决方法

列表没有通知项目计数已更改的行为.您应该使用支持INotifyCollectionChanged的列表,例如:ObservableCollection< T>.的ObservableCollection< T>将通知您的lvItems项目计数已更改,并将正确显示.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读