Xaml 如何将数据绑定到动态LongListSelector
嗨,我有一个带有动态数据透视项的数据透视,我需要将带有StackPanels和TextBlock的LongListSelector放入数据透视项。我在TextBlock中绑定文本时遇到问题。绑定PivotHeader很好,但我不知道如何用TextBlock绑定名称 XAMLXaml 如何将数据绑定到动态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
和代码隐藏
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>