gpt4 book ai didi

c# - 数据绑定(bind)到 WP8 工具包 ExpanderView

转载 作者:行者123 更新时间:2023-11-30 16:17:28 30 4
gpt4 key购买 nike

我正在尝试将数据绑定(bind)到 Windows Phone 8 Toolkit Expander使用以下 XAML 和 C# 类查看。我知道 DataContext 设置正确,因为 header 具有正确的文本。但是,其余项目设置不正确(ExpanderTemplate 除外)

<phone:PanoramaItem Header="Skill Sheet">
<ListBox Name="SkillSheet" ItemsSource="{Binding}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<toolkit:ExpanderView Header="{Binding}"
ItemsSource="{Binding}"
IsNonExpandable="False">
<toolkit:ExpanderView.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding groupName}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" LineHeight="{StaticResource LongListSelectorGroupHeaderFontSize}" />
</DataTemplate>
</toolkit:ExpanderView.HeaderTemplate>

<toolkit:ExpanderView.ExpanderTemplate>
<DataTemplate>
<TextBlock Text="Test" />
</DataTemplate>
</toolkit:ExpanderView.ExpanderTemplate>


<!--This is the area that is not getting databound-->
<toolkit:ExpanderView.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding skillNames}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding skill}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</toolkit:ExpanderView.ItemTemplate>
</toolkit:ExpanderView>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</phone:PanoramaItem>

下面是 XAML 绑定(bind)到的类:

public class TreeMapSkill
{
public string skill { get; set; }
}

public class TreeMapping
{
public string groupName { get; set; }

public List<TreeMapSkill> skillNames { get; set; }

public TreeMapping()
{
skillNames = new List<TreeMapSkill>();
}
}

public class TreeMappingList
{
public List<TreeMapping> mapping { get; set; }

public TreeMappingList() { }

public TreeMappingList(Dictionary<string, List<string>> map)
: base()
{
this.mapping = new List<TreeMapping>();

foreach (string key in map.Keys)
{
TreeMapping tMap = new TreeMapping();
tMap.groupName = key;
foreach (string val in map[key])
tMap.skillNames.Add(new TreeMapSkill() { skill = val });
this.mapping.Add(tMap);
}
}

构造函数中的字典只是与特定组关联的技能列表。如果需要额外引用,我还可以提供示例对象。

最佳答案

为什么要在 Expander 的 ItemTemplate 中添加一个 ListBox?它已经是一个控件集合,因此您不需要在其中添加 ListBox。只需将您的 DataTemplate 放入其中即可。

<toolkit:ExpanderView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding skill}" />
</DataTemplate>
</toolkit:ExpanderView.ItemTemplate>

第二件事是您需要在扩展器的 ItemSource 属性的绑定(bind)上指定属性路径。

<toolkit:ExpanderView Header="{Binding}"
ItemsSource="{Binding skillNames}"
IsNonExpandable="False">

关于c# - 数据绑定(bind)到 WP8 工具包 ExpanderView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17138584/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com