从WP8.1重新定位到WP8后,ItemsControl的数据绑定不起作用

皮皮书呆子

我用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;
}

我直接绑定到UserControl的DataContext。当我尝试绑定到UserControl和UserControl内部的控件时,发生了问题。显然是一个容易犯的错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章