对于C#/ XAML中的Windows 8应用程序,我希望能够知道我在分组网格的标题模板中的按钮的位置(X和Y):
这是简单的Xaml代码:
<GridView x:Name="PicturesGridView" SelectionMode="None"
ItemsSource="{Binding Source={StaticResource cvs1}}" IsItemClickEnabled="True"
ItemTemplate="{StaticResource CustomTileItem}" ItemClick="ItemView_ItemClick" IsSwipeEnabled="True">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</local:MyGridView.ItemsPanel>
<local:MyGridView.GroupStyle>
<GroupStyle x:Name="MyGroupStyle">
<GroupStyle.HeaderTemplate >
<DataTemplate x:Name="MyDataTemplate">
<Button x:Name="HeaderButton" Click="Button_Click_1" Content="{Binding Key}" Foreground="Black" Background="White" FontSize="30" Margin="0,0,0,-10" ></Button>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid ItemWidth="75" ItemHeight="150" Orientation="Vertical" Margin="0,0,80,0" MaximumRowsOrColumns="3"/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
<GridView.GroupStyle>
<GridView>
通过执行以下操作,我成功访问了标题模板中的Button:
var template = element.FindName("PicturesGridView") as MyGridView;
var group = template.GroupStyle[0] as GroupStyle;
var buttonHeader = group.HeaderTemplate.LoadContent() as Button;
但是我无法区分模板的每个按钮。我想要一组物理按钮来表示我的数据及其位置。
感谢您的帮助
答案 0 :(得分:1)
WinRT Tookit拥有您所需要的...查看http://winrtxamltoolkit.codeplex.com/downloads/get/467926并查看VisualTreeHelperExtensions。
使用扩展方法GetDescendantsOfType,您可以编写如下代码:
var buttons = PicturesGridView.GetDescendantsOfType()。ToArray();
现在,这将为您提供PicturesGridView中的所有按钮,因此如果您还有包含按钮的项目模板,您也可以获得这些按钮。您可以在页眉模板中的按钮上设置Tag属性,以便您可以从其他按钮轻松识别它们。