0

私はC#、Silverlight、Visual Studio for WindowsPhone7を使用しています。

ピボット中に画面に現在表示されている視覚要素のみを取得することに興味があります。たとえば、ピボットに5つのPivotItemを含めることができますが、各フリックの後に表示されているアイテムのみを取得したいと思います。

現在、ビジュアルツリーからピボット全体を取得でき、明らかに特定のピボットアイテムを選択できます。ただし、画面上の現在のピボットのみを取得できるようにしたいと思います。最終的な目標は、現在のPivotItemに関係なく、画面上の要素の絶対位置を取得することです。

これは可能ですか?もしそうなら、どのように?

4

1 に答える 1

2

SelectedItemおよび/またはSelectedIndexピボット上で、現在表示されているPivotItemを返します。

私のポイントを説明するためのサンプルコード:

XAML:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <!--Pivot Control-->
    <controls:Pivot x:Name="SomePivot" Title="MY SAMPLE PIVOT">
            <StackPanel>
                <Button Content="Button 0"/>
                <Button Content="Button 1"/>
                <Button Content="Button 2"/>
                <Button Content="Button 3"/>
                <Button Content="Button 4"/>
                <Button Content="Button 5"/>
                <Button Content="Button 6"/>
                <Button Content="Button 7"/>
                <Button Content="Button 8"/>
                <Button Content="Button 9"/>
                <Button Content="Button 0"/>
                <Button Content="Button 1"/>
                <Button Content="Button 2"/>
                <Button Content="Button 3"/>
                <Button Content="Button 4"/>
                <Button Content="Button 5"/>
                <Button Content="Button 6"/>
                <Button Content="Button 7"/>
                <Button Content="Button 8"/>
                <Button Content="Button 9"/>
            </StackPanel>
        </controls:PivotItem>
        <controls:PivotItem Header="item2">
            <Button Content="Button D" Name="B"/>
        </controls:PivotItem>
        <controls:PivotItem Header="item3">
            <Button Content="Button D" Name="C"/>
        </controls:PivotItem>
        <controls:PivotItem Header="item4">
            <Button Content="Button D" Name="D"/>
        </controls:PivotItem>
    </controls:Pivot>

    <Button Grid.Row="1" Content="Get Current Pivot Item" Click="GetCurrentPivotItem"/>
</Grid>

コードビハインド:

private void GetCurrentPivotItem(object sender, RoutedEventArgs e)
{
    PivotItem pivotItem = (PivotItem)SomePivot.SelectedItem;
    Debug.WriteLine("Pivot Item : {0}", pivotItem.Header);
    foreach (var element in VisualTreeHelper.FindElementsInHostCoordinates(new Rect(20, 0, 480, 700), pivotItem))
    {
        if (element is Button)
        {
            Debug.WriteLine("{0}", ((Button)element).Content);
        }
    }
}

これは役に立ちますか?

于 2012-09-11T16:25:26.653 に答える