0

C#/XAMLのWindows8アプリケーションの場合、グループ化されたグリッドビューのヘッダーテンプレートにあるボタンの位置(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>

これを行うことで、ヘッダーテンプレート内のボタンにアクセスすることに成功しました。

            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 Toolkit には必要なものがあります... http://winrtxamltoolkit.codeplex.com/downloads/get/467926をチェックして、VisualTreeHelperExtensions を見てください。

拡張メソッド GetDescendantsOfType を使用すると、次のようなコードを記述できます。

var ボタン = PicturesGridView.GetDescendantsOfType().ToArray();

これで、PicturesGridView のすべてのボタンが表示されるので、ボタンを含むアイテム テンプレートがある場合は、それらも取得されます。ヘッダー テンプレートのボタンに Tag プロパティを設定して、他のボタンと簡単に識別できるようにすることができます。

于 2012-08-17T14:39:18.540 に答える