从列表框中返回ID

时间:2016-01-12 11:17:30

标签: c# wpf wcf listbox

我的WCF中有两种方法,一种用于填充ListBox,另一种用于删除我选择的ListBox项。

我的问题是,当我运行我的Delete方法时,Data显示为null,也没有错误或异常。

编码运行平稳但没有任何变化,所选项目保留在列表框中。

WPF

private void bnFeedDel_Click(object sender, RoutedEventArgs e)
{

    using (TruckServiceClient service = new TruckServiceClient())
    {
        service.DelFeedAsync(new FeedView
            {
                Id = lbFeed.SelectedIndex
            });
    }
}

public async Task LoadFeeds()
{

    TruckServiceClient TSC = new TruckServiceClient();

    try 
    {           
        List<ClientItems> feeditems = new List<ClientItems>();

        foreach (var item in await TSC.GetFeedAsync())
        {
            feeditems.Add(new ClientItems
                {
                    FId = item.Id,
                    FTitle = item.Title,
                    FContent = item.Content
                });
        }

        lbFeed.ItemsSource = (feeditems.ToArray());
        lbFeed.DisplayMemberPath = "FTitle";
    }
    catch (Exception)
    {
        throw;
    }
}

WCF

public void DelFeed(FeedView feedview)
{

    using (var result = new TruckDb())
    {
        var t = new Feed
            {
                Id = feedview.Id,
                Title = feedview.Title,
                Content = feedview.Content
            };
        result.Feed.Remove(t);
        result.SaveChanges();
    }
}

这对我来说还是新鲜的,所以对我的编码的任何意见/建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

在对WCF服务的调用中,您传入了FeedView的新实例,只设置了Id属性:

service.DelFeedAsync(new FeedView { Id = lbFeed.SelectedIndex });

因此,当服务方法运行时,TitleContent都没有要设置的值(假设它们都是字符串,它们将为null或空字符串):

var t = new Feed {
        Id = feedview.Id,
        Title = feedview.Title,
        Content = feedview.Content};

当您致电result.Feed.Remove(t);时,不会删除任何内容,因为没有要删除的匹配项。

附加说明:将using与WCF服务客户端一起使用是违反最佳做法的:https://msdn.microsoft.com/en-us/library/aa355056(v=vs.110).aspx