我试图像这样修改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>

但是我得到了错误



我应该如何在ObjectAnimationUsingKeyFrames Storyboard.TargetName属性中引用WrapGrid?

最佳答案

您不能使用x:Name访问模板内的元素。由于模板可以被实例化很多次,所以动画无法确定应该操纵哪个元素。

如果需要更改模板内元素的属性,则应使用绑定(bind):

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

关于c# - 如何从XAML代码更改ItemsPanelTemplate WrapGrid?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12869410/

10-11 13:46