与LongListSelector绑定问题

时间:2013-09-15 22:19:59

标签: c# wpf windows-phone-8 longlistselector

第一次来电,长时间听众......
我整天都在反对一个数据绑定问题,并且不知所措。我试图用Windows Phone 8的LongListSelector显示链接列表。

我有一个代表Link(ExternalLink)的类

我有一个代表链接集合的类(ExternalLinkList)

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

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>

1 个答案:

答案 0 :(得分:0)

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