6

次のように、WrapGrid の MaximumRowsOrColumns プロパティを変更しようとしています。

<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <WrapGrid x:Name="wrapGridItems" Orientation="Vertical" MaximumRowsOrColumns="1" />
    </ItemsPanelTemplate>
</GridView.ItemsPanel>

そして、次のコードを使用して WrapGrid を変更しています。

<VisualState x:Name="Snapped">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="wrapGridItems" Storyboard.TargetProperty="MaximumRowsOrColumns">
            <DiscreteObjectKeyFrame KeyTime="0" Value="-1"/>
        </ObjectAnimationUsingKeyFrames>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="headerText" Storyboard.TargetProperty="Text">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Pins"/>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

しかし、私はエラーが発生しています

WinRT 情報: TargetName wrapGridItems を解決できません。

ObjectAnimationUsingKeyFrames Storyboard.TargetName プロパティで WrapGrid を参照するにはどうすればよいですか?

4

2 に答える 2

4

x:Name を使用してテンプレート内の要素にアクセスすることはできません。テンプレートは何度もインスタンス化される可能性があるため、アニメーションはどの要素を操作する必要があるかを判断できません。

テンプレート内の要素のプロパティを変更する必要がある場合は、バインディングを使用する必要があります。

<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <WrapGrid Orientation="Vertical" MaximumRowsOrColumns="{Binding MyMaxRowsOrCollumns}" />
    </ItemsPanelTemplate>
</GridView.ItemsPanel>
于 2012-10-13T04:51:58.600 に答える
0

設計コード:

<GridView >

<GridView.ItemsPanel>
                            <ItemsPanelTemplate>
                                <WrapGrid x:Name="wrapGrid" Orientation="Vertical"   MaximumRowsOrColumns="{Binding MyMaxRowsOrCollumns}"></WrapGrid>
                            </ItemsPanelTemplate>
                        </GridView.ItemsPanel>
</GridView >

C# コード:

依存プロパティの作成

public int MyMaxRowsOrCollumns
    {
        get { return (int)GetValue(MyMaxRowsOrCollumnsProperty); }
        set { SetValue(MyMaxRowsOrCollumnsProperty, value); }
    }

    // Using a DependencyProperty as the backing store for MyMaxRowsOrCollumns.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty MyMaxRowsOrCollumnsProperty =
        DependencyProperty.Register("MyMaxRowsOrCollumns", typeof(int), typeof(DashBord), new PropertyMetadata(2));
于 2016-05-16T06:53:01.320 に答える