访问分组gridView中标题模板的元素

时间:2012-08-17 10:02:12

标签: c# xaml windows-8 windows-runtime

对于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;

但是我无法区分模板的每个按钮。我想要一组物理按钮来表示我的数据及其位置。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

WinRT Tookit拥有您所需要的...查看http://winrtxamltoolkit.codeplex.com/downloads/get/467926并查看VisualTreeHelperExtensions。

使用扩展方法GetDescendantsOfType,您可以编写如下代码:

var buttons = PicturesGridView.GetDescendantsOfType()。ToArray();

现在,这将为您提供PicturesGridView中的所有按钮,因此如果您还有包含按钮的项目模板,您也可以获得这些按钮。您可以在页眉模板中的按钮上设置Tag属性,以便您可以从其他按钮轻松识别它们。