Xaml 如何将数据绑定到动态LongListSelector

Xaml 如何将数据绑定到动态LongListSelector,xaml,windows-phone-8,longlistselector,Xaml,Windows Phone 8,Longlistselector,嗨,我有一个带有动态数据透视项的数据透视,我需要将带有StackPanels和TextBlock的LongListSelector放入数据透视项。我在TextBlock中绑定文本时遇到问题。绑定PivotHeader很好,但我不知道如何用TextBlock绑定名称 XAML 和代码隐藏 public class LongListData { public string Name { get; set; } } public class PivotData { public

嗨,我有一个带有动态数据透视项的数据透视,我需要将带有StackPanels和TextBlock的LongListSelector放入数据透视项。我在TextBlock中绑定文本时遇到问题。绑定PivotHeader很好,但我不知道如何用TextBlock绑定名称

XAML


和代码隐藏

public class LongListData
{
    public string Name { get; set; }
}

public class PivotData
{
    public string Header { get; set; }

    public LongListSelector LongListSelector { get; set; }
}

public partial class MainPage
{
    public MainPage()
    {
        InitializeComponent();

        var pivotDataList = new List<PivotData>();
        var pivotItem1 = new PivotData {Header = "Header1", LongListSelector = new LongListSelector()};
        var pivotItem2 = new PivotData {Header = "Header2", LongListSelector = new LongListSelector()};

        pivotDataList.Add(pivotItem1);
        pivotDataList.Add(pivotItem2);
        ShelfsPivot.ItemsSource = pivotDataList;

        var list = new List<LongListData>();
        var item0 = new LongListData {Name = "Item1"};
        var item1 = new LongListData {Name = "Item2"};
        var item2 = new LongListData {Name = "Item3"};
        list.Add(item0);
        list.Add(item1);
        list.Add(item2);

        foreach (var pivotItem in ShelfsPivot.Items)
        {
            var longlist = pivotItem as PivotData;
            if (longlist != null)
                longlist.LongListSelector.ItemsSource = list;
        }
    }
}
公共类LongListData
{
公共字符串名称{get;set;}
}
公共类数据透视
{
公共字符串头{get;set;}
公共LongListSelector LongListSelector{get;set;}
}
公共部分类主页
{
公共主页()
{
初始化组件();
var pivotDataList=新列表();
var pivotItem1=new PivotData{Header=“Header1”,LongListSelector=new LongListSelector()};
var pivotItem2=new PivotData{Header=“Header2”,LongListSelector=new LongListSelector()};
数据透视表。添加(数据透视项1);
数据透视表。添加(数据透视项2);
ShelfsPivot.ItemsSource=数据透视列表;
var list=新列表();
var item0=new LongListData{Name=“Item1”};
var item1=new LongListData{Name=“Item2”};
var item2=new LongListData{Name=“Item3”};
列表。添加(第0项);
增加(第1项);
增加(第2项);
foreach(shelfspvot.Items中的变量pivotItem)
{
var longlist=作为数据透视数据的数据透视项;
if(longlist!=null)
longlist.LongListSelector.ItemsSource=list;
}
}
}

LongListSelector的项绑定本身不应该是LongListSelector,它应该是列表或ObservableCollection。如果是静态数据,请使用列表。如果是动态数据,请使用ObservableCollection

所以,它应该看起来像这样

public class LongListData
{
    public string Name { get; set; }
}

public class PivotData
{
    public string Header { get; set; }

    public ObservableCollection<LongListData> ListData { get; set; }
}

public MainPage()
{
    InitializeComponent();

    var list = new ObservableCollection<LongListData>();
    var item0 = new LongListData {Name = "Item1"};
    var item1 = new LongListData {Name = "Item2"};
    var item2 = new LongListData {Name = "Item3"};
    list.Add(item0);
    list.Add(item1);
    list.Add(item2);

    var pivotDataList = new List<PivotData>();
    var pivotItem1 = new PivotData {Header = "Header1", ListData = list};
    var pivotItem2 = new PivotData {Header = "Header2", ListData = list};

    pivotDataList.Add(pivotItem1);
    pivotDataList.Add(pivotItem2);
    ShelfsPivot.ItemsSource = pivotDataList;
}
公共类LongListData
{
公共字符串名称{get;set;}
}
公共类数据透视
{
公共字符串头{get;set;}
公共ObservableCollection ListData{get;set;}
}
公共主页()
{
初始化组件();
var list=新的ObservableCollection();
var item0=new LongListData{Name=“Item1”};
var item1=new LongListData{Name=“Item2”};
var item2=new LongListData{Name=“Item3”};
列表。添加(第0项);
增加(第1项);
增加(第2项);
var pivotDataList=新列表();
var pivotItem1=newpivotData{Header=“Header1”,ListData=list};
var pivotItem2=newpivotData{Header=“Header2”,ListData=list};
数据透视表。添加(数据透视项1);
数据透视表。添加(数据透视项2);
ShelfsPivot.ItemsSource=数据透视列表;
}
你的装束是这样的

<phone:Pivot.ItemTemplate>
    <DataTemplate>
        <phone:LongListSelector ItemsSource="{Binding ListData}">
            <phone:LongListSelector.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <CheckBox />
                        <TextBlock Text="{Binding Name}" />
                    </StackPanel>
                </DataTemplate>
            </phone:LongListSelector.ItemTemplate>
        </phone:LongListSelector>
    </DataTemplate>
</phone:Pivot.ItemTemplate>


希望这有助于和快乐的编码

检查Visual Studio中的输出窗口,查看是否存在任何明显的绑定错误?您正在代码中创建LongListSelector控件,并将它们绑定到另一个LongListSelector控件的ItemsSource属性。这完全没有感觉。
<phone:Pivot.ItemTemplate>
    <DataTemplate>
        <phone:LongListSelector ItemsSource="{Binding ListData}">
            <phone:LongListSelector.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <CheckBox />
                        <TextBlock Text="{Binding Name}" />
                    </StackPanel>
                </DataTemplate>
            </phone:LongListSelector.ItemTemplate>
        </phone:LongListSelector>
    </DataTemplate>
</phone:Pivot.ItemTemplate>