长名单选择器的绑定问题

本文关键字:绑定 问题 选择器 名单 | 更新日期: 2023-09-27 18:31:20

第一次调用者,长时间侦听...
我整天都在为数据绑定问题而苦恼,不知所措。 我正在尝试显示带有Windows Phone 8的LongListSelector的链接列表。

我有一个代表链接(外部链接)的类

我有一个表示链接集合的类(外部链接列表)

我已经验证了集合加载了正确的数据,没有问题。鉴于下面的代码,有人可以指出我确定我现在看到的一个令人难以置信的明显问题吗?

public class ExternalLink
{
    /// <summary>
    /// Property for link title
    /// </summary>        
    public String Title { get; set; }
    /// <summary>
    /// Property for link text
    /// </summary>        
    public String Text { get; set; }
    /// <summary>
    /// Property for link image name. 
    /// </summary>        
    public String ImageName { get; set; }
    /// <summary>
    /// Property for item text
    /// </summary>        
    public String Link { get; set; }
    public ExternalLink(string title, string text, string imagename, string link)
    {
        Title = title;
        Text = text;
        ImageName = imagename;
        Link = link;
    }
    public ExternalLink()
    {
        // TODO: Complete member initialization
    }
    public Uri Url
    {
        get
        {
            Uri uri = new Uri(Link, UriKind.RelativeOrAbsolute);
            return uri;
        }
        set
        {
            Url = value;
        }
    }
}

集合代码(更新):

public class ExternalLinkList
{
    private ObservableCollection<ExternalLink> list;
    public ObservableCollection<ExternalLink> List
    {
        get
        {
            if (list == null)
            {
                list = new ObservableCollection<ExternalLink>();
            }
            return list;
        }
        set
        {
            if (list != value)
            {
                list = value;
            }
        }
    }
    public ExternalLinkList()
    {
    }
}

视图模型代码:

public partial class LinkListPage : PhoneApplicationPage
{
    public static ExternalLinkList List {get; set;}
    public static Uri LinkListXML = new Uri("/GenericRssReader;component/pagelinklist.xml", UriKind.Relative);
    public static string imagePathTo = "/GenericRssReader;Assets/LinkImages/";
    public LinkListPage()
    {
        InitializeComponent();
        Loaded += LinkListPage_Loaded;
    }
    private void LinkListPage_Loaded(object sender, RoutedEventArgs e)
    {
        List = new ExternalLinkList();
        StreamResourceInfo xml = App.GetResourceStream(LinkListXML);
        ParseOPML(xml.Stream, imagePathTo);
        //MessageBox.Show("test " + List.List.Count);
        LinkList.ItemsSource = List.List;
    }
    private static void ParseOPML(Stream stream, string pathto)
    {
        XDocument xDocument = XDocument.Load(stream);
        // XML parsed using Linq
        ExternalLink lin = null;
        foreach(XElement outline in xDocument.Descendants("outline"))
        {
            string ImageName = pathto + outline.Attribute("imageName").Value;
            lin = new ExternalLink(outline.Attribute("title").Value, 
                outline.Attribute("text").Value, 
                ImageName, 
                outline.Attribute("xmlUrl").Value);
            List.List.Add(lin);
            //MessageBox.Show(lin.Title + "'n" + lin.Text + "'n" + lin.ImageName + "'n" + lin.Link);
        }
        //MessageBox.Show("Title 0: " + List.List[0].Title + "'n ImageName 0: " + List.List[0].ImageName);
    }
}

XAML 代码

<phone:LongListSelector 
    x:Name="LinkList" 
    HorizontalAlignment="Left"  
    Margin="5,0,0,0" 
    VerticalAlignment="Top" 
    DataContext="local:ExternalLink"
    SelectionChanged="LinkList_SelectionChanged"
    ItemTemplate="{StaticResource HorizontalTileDataTemplate}"
    >
</phone:LongListSelector>

长名单选择器的绑定问题

最后,

我通过将LongListSelector更改为ListBox来解决我的问题。一旦我这样做了,问题就消失了。 我不知道这是否只是 LLS 中的另一个错误,或者我是否缺少一些东西,但功能方面我似乎没有缺少我需要的任何东西,所以这就是我前进的方式......感谢大家的评论。