我使用 ItemTemplate 和 DataTemplate 创建了一个简单的 ItemsControl。
我将填充的 IEnumerable 分配给 DataContext,但没有显示任何项目。
这是我的 ItemsControl (XAML):
<ItemsControl Name="pnlMenu" DataContext="{Binding}"
Grid.Row="0" Margin="5,17,0,28">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button BorderBrush="{x:Null}" BorderThickness="0" Background="DodgerBlue" Height="25" Width="185" Margin="5,0" RenderTransformOrigin="0.5,0.5">
<Button.ContentTemplate>
<DataTemplate>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Width="170">
<Image Source="Assets/Square71x71Logo.scale-100.png" Width="35" />
<TextBlock Text="{Binding Title}" VerticalAlignment="Center" Margin="5,0,0,0" />
</StackPanel>
</DataTemplate>
</Button.ContentTemplate>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这是隐藏代码(C#):
public void SetMenuDataContent(IEnumerable<NavDataGroup> groups)
{
pnlMenu.DataContext = groups;
}
这可能听起来很奇怪,但我实际上是从 WP8.1 转到 WP8,而不是相反。
这曾经在 WP8.1 中工作,但为什么在 WP8 中不起作用? MSDN 向我展示了类似的例子...
下面是 IEnumerable 中的组示例:
{
"Groups":[
{
"UniqueId": "mainpage",
"Title": "Start",
"Subtitle": "U bent hier thuis",
"ImagePath": "Assets/DarkGray.png",
"Description": "Een snel overzicht...",
"Items":
[
{
"UniqueId": "outdoors",
"Title": "Buitenbad",
"Subtitle": "Het buitenbad is vandaag",
"ImagePath": "Assets/Open.png",
"Description" : "",
"Content" : "Open"
},
{
"UniqueId": "indoors",
"Title": "Binnenbad",
"Subtitle": "Het binnenbad is vandaag",
"ImagePath": "Assets/Open.png",
"Description" : "",
"Content" : "Open"
},
{
"UniqueId": "photos",
"Title": "Foto's",
"Subtitle": "",
"ImagePath": "Assets/LightGray.png",
"Description" : "",
"Content" : "[\"Assets/LightGray.png\", \"Assets/DarkGray\", \"Assets/MediumGray\"]"
}
]
}
]
}
最佳答案
这是一个适合我的解决方案:
public async void SetMenuDataContent()
{
this.DataContext = groups;
}
我直接绑定(bind)到 UserControl 的 DataContext。 当我尝试绑定(bind)到 UserControl 内部的控件和 UserControl 本身时,出现了问题。显然这是一个很容易犯的错误。
关于c# - 从 WP8.1 重定向到 WP8 后,ItemsControl 的数据绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23328197/