0

コレクションを LLS にバインドしようとしていますが、InvalidCastException が発生します。LLS の代わりに ListBox を使用すると、すべてのバインドが正常に機能します。ここに私のコレクションがあります:

    public class Friend : INotifyPropertyChanged
{
    private string name;
    public string Name { get { return name; } set { name = value; OnPropertyChanged("Name"); } }
    private string image;
    public string Image { get { return image; } set { image = value; OnPropertyChanged("Image"); } }
    private string sourseId;
    public string SourseId { get { return sourseId; } set { sourseId = value; OnPropertyChanged("SourseId"); } }
    private string online_image;
    public string Online_Image { get { return online_image; } set { online_image = value; if (online_image == "1") online_image = @"/icons/appbar.power.png"; OnPropertyChanged("Online_Image"); } }
    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string info)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(info));
        }
    }
    public Friend() { }


}
public class FriendList : ObservableCollection<Friend>
{
    public FriendList()
        : base()
    {

    }
}

そして、これがLLSにバインドする方法です:

            XDocument xml = XDocument.Load(e.Result);
      //  MessageBox.Show(xml.ToString());
        var users = from c in xml.Descendants("user")
                    select c;
        foreach (var user in users)
        {
            Friend fr = new Friend();
            fr.SourseId = (string)user.Element("uid").Value;
            fr.Image = (string)user.Element("photo_medium").Value;
            fr.Name = (string)user.Element("first_name").Value + " " + (string)user.Element("last_name").Value;
            fr.Online_Image = (string)user.Element("online").Value;
            if (fr.Online_Image == "1") fr.Online_Image = @"/icons/appbar.power.png";
            FriendList.Add(fr);
        }
        this.AllFriendsList.ItemsSource = FriendList;

そしてpublic FriendList FriendList = new FriendList();ページctorのすぐ下にあります。私が間違っていることは何ですか?文字列で例外が発生するthis.AllFriendsList.ItemsSource = FriendList;

そして、ここに私のxamlがあります:

                    <toolkit:LongListSelector Name="AllFriendsList" ItemsSource="{Binding FriendList}">
                    <toolkit:LongListSelector.ItemTemplate>
                        <DataTemplate>
                            <Grid Height="75" Width="460" Margin="0,10,10,0">
                                <Line Style="{StaticResource Line1}" ></Line>
                                <Line Style="{StaticResource Line2}" ></Line>
                                <TextBlock Margin="75,15,40,0" FontSize="30" Name="Name" Text="{Binding Name}" Tap="GetUserInfo" />
                                <Image HorizontalAlignment="Left" Width="75" Name="Photo" >
                                    <Image.Source>
                                        <BitmapImage UriSource="{Binding Image}" CreateOptions="BackgroundCreation" />
                                    </Image.Source>
                                </Image>
                                <Image HorizontalAlignment="Right" Name="IsOnline" Margin="0,0,0,0" Width="60" Height="60" Source="{Binding Online_Image}" />
                            </Grid>
                        </DataTemplate>
                    </toolkit:LongListSelector.ItemTemplate>
                </toolkit:LongListSelector>

UPD:この例のようにグループを使用し、リストを次のようにグループ化すると

            var FriendsGroup = from fr in FriendList
                            group fr by fr.Online_Image into c
                            orderby c.Key
                            select new Group<Friend>(c.Key, c);

        AllFriendsList.ItemsSource = FriendsGroup;

それは正常に動作します。私が正しいことを理解していれば、LLS はグループ化されたソースを待っています。

4

2 に答える 2

1

IsFlat を True に変更することで、同じ問題を解決しました。

<toolkit:LongListSelector Name="AllFriendsList" ItemsSource="{Binding FriendList}" IsFlat="True">
于 2013-12-26T10:04:16.777 に答える
0

AllFiendsList に 2 回バインドしています。ここで xaml を初めて使用する

<toolkit:LongListSelector Name="AllFriendsList" ItemsSource="{Binding FriendList}">

2回目はコードを介して。これにより、例外が発生する可能性があります。

于 2013-01-04T15:13:42.973 に答える