0

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

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

感谢您的帮助

4

1 回答 1

1

WinRT Tookit 可以满足您的需求...查看http://winrtxamltoolkit.codeplex.com/downloads/get/467926并查看 VisualTreeHelperExtensions。

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

var 按钮 = PicturesGridView.GetDescendantsOfType().ToArray();

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

于 2012-08-17T14:39:18.540 回答