【问题标题】:Adding list items to observable collection list将列表项添加到可观察的集合列表
【发布时间】:2017-07-04 16:19:32
【问题描述】:

您好,我正在尝试将列表项添加到可观察的集合列表中。 我有一个模型,我在其中设置了一个列表属性

public class DisplayList
{
   public List<string> listItem { get; set; }
}

然后在我的主页上我有一个可观察的集合

 private ObservableCollection<DisplayList> ListDisplay;

我在页面加载时实例化

 public MainPage()
    {

        this.InitializeComponent();

        location = new ObservableCollection<storeLocations>();
        ListDisplay = new ObservableCollection<DisplayList>();
        // location = manager.getStoreLocations();
        var dbList = db.Bales.Where(b => b.Location != null).Select(b => b.Location).ToList();
        InitialLoad(dbList, null);

    }

我正在使用建议框并希望根据所做的选择过滤结果。过滤的结果然后显示在屏幕上的列表中,这就是我遇到麻烦的地方。我让它显示在屏幕上,但它正在显示 System.Collection.Generic.List'1[S.......而不是列表中的实际项目。

我认为我没有正确枚举,但似乎无法以我的方式指出错误。

这是一种基于选择建议框来填充列表的方法。

 public ObservableCollection<DisplayList>BaleList(List<string> CatNo)
    {

        foreach (var item in CatNo)
        {

            ListDisplay.Add(new DisplayList {listItem = CatNo.ToList()});
        }

        lstBales.IsItemClickEnabled = true;

        return ListDisplay;
    }

它接受从建议框中获取的列表类型参数。所以参数值基本上就是我想在屏幕列表中显示的内容。例如CP1354-2 和第二项 CP1355-3 所以这些值进入了方法。我想将这些值应用于可观察集合,因为列表框控件绑定到可观察集合。

编辑 在 XAML 中添加绑定

  <ListView x:Name="lstBales" ItemsSource="{x:Bind ListDisplay}">
                        <ListView.ItemTemplate>
                            <DataTemplate  x:Name="TemplateListName" x:DataType="data:DisplayList">
                                <Grid>
                                    <TextBlock Text="{x:Bind listItem}"/>
                                </Grid>

                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>

【问题讨论】:

  • 您正在将类型为 List 的对象绑定到 TextBlock。而 TextBlock.Text 需要一个字符串。
  • 那么,如果我将对象从类型列表更改为类型字符串,它应该可以解决我的问题吗?
  • 感谢您为我指明正确的方向。从列表更改为字符串后,我仍然遇到同样的问题,但经过一番头疼之后,我实际上在方法上犯了一个错误。在 foreach 循环中...我放了 listItem = CatNo.ToList() 它应该是 ListItem = item.ToString 而不是 CatNo 输入参数...这样除了有关 Datatemplate 的建议之外,它还可以整理出来。谢谢大家

标签: c# uwp uwp-xaml


【解决方案1】:
ListDisplay.Add(new DisplayList {listItem = CatNo.ToList()});

和&lt;TextBlock Text="{x:Bind listItem}"/&gt;

您正在将列表绑定到 TextBlock,因此 ToString() 被隐式调用并且您没有获得实际值。根据您的要求,您可以将listItem 更改为字符串或创建嵌套ListView

【讨论】:

  • 感谢已更改为字符串,并且在 foreach 循环中也有问题。我设置了 listitem = CatNo 但应该设置为 item .. 感谢您的帮助
猜你喜欢
  • 2023-03-13
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 2014-11-29
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多