获取动态hubtile名称以创建辅助切片

时间:2014-05-04 17:00:26

标签: c# xml windows-phone-8

当我使用静态轮毂时,我正在使用开关和箱子创建二级瓷砖,每个案例都是hubtile的名称。 这行代码让我得到了点击的hubtile的名称:

string clickedElement = ((System.Windows.FrameworkElement)(sender)).Name;

我可以用它来创建它们。

我正在努力使动态hubtile能够被固定以开始使用Hold事件,但该行现在变为“”。

我的图块(8)是从xml文件

创建的
<root>
 <categories>
  <category>
   <categoryID>1</categoryID>
   <categoryName>chicken</categoryName>
   <ImageUri>chicken1.png</ImageUri>
  </category>
  ...
 </categories>
</root>

读取xml文件的代码:

        XDocument loadedData = XDocument.Load("xmlFiles/categories.xml");

        var data = from query in loadedData.Descendants("category")
                   select new Category
                   {
                       categoryID = (string)query.Element("categoryID"),
                       categoryName = (string)query.Element("categoryName"),
                   };
       tileList.ItemsSource = data;

xaml代码是:

<ListBox Grid.Row="0" x:Name="tileList">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <toolkit:WrapPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>

            <ListBox.ItemTemplate>
                <DataTemplate>
                    <toolkit:HubTile Margin="25" 
        Title="{Binding categoryName}" 
        Source="{Binding ImageUri}"
        Tap="Selection_Tap" 
        Hold="SelectionPin_Hold">
                    </toolkit:HubTile>
                </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

创建实时图块的代码

private void CreateLiveTile(HubTile hubtile, string Name)
    {
        StandardTileData LiveTile = new StandardTileData
        {
            Title = hubtile.Title,
            BackBackgroundImage = (hubtile.Source as BitmapImage).UriSource
        };
        ShellTile Tile = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("Name=" + Name));
        {
            if (Tile == null)
            {
                ShellTile.Create(new Uri("/MainPage.xaml?Name=" + Name,UriKind.Relative), LiveTile);
            }
            else
            {
                MessageBox.Show("Tile already pinned");
            }
        }
    }

CreateLive tiles方法实际上从未正常工作。它正在将辅助磁贴固定在屏幕上,但是当这些磁贴被点击时,它们会将我返回到MainPage.xaml而不是原始文件的导航Uri。但是不要为此烦恼,我改变了我的代码,因此每个hubtile都转到同一页面,但不同的数据是从另一个xml文件中动态显示的。

1 个答案:

答案 0 :(得分:0)

没关系,我发现了它。我的误会。我现在必须使用的是

string clickedElement = ((System.Windows.FrameworkElement)(sender)).Tag;