加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

在VisualStateManager(WinRT XAML)中更改ItemTemplate中控件的属

发布时间:2020-12-13 22:33:05 所属栏目:Windows 来源:网络整理
导读:我有我用于SnapView和Portrait视图的ListView.但是,我想在这两个视图中更改项目模板的某些项目. VisualStateManager似乎是理想的做法,但我无法弄清楚. 这是我的ListView XAML: ListView x:Name="SampleListView" ItemsSource="{Binding Samples}" Visibilit
我有我用于SnapView和Portrait视图的ListView.但是,我想在这两个视图中更改项目模板的某些项目. VisualStateManager似乎是理想的做法,但我无法弄清楚.

这是我的ListView XAML:

<ListView x:Name="SampleListView" ItemsSource="{Binding Samples}" Visibility="Collapsed">
    <ListView.ItemTemplate>
        <DataTemplate>
            <local:SampleBlock SampleText="{Binding ElementName=pageRoot,Path=DataContext.SampleText,Mode=TwoWay}"
                Height="70" Width="Auto" Margin="5" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

我想使用页面的VisualStateManager更改我的SampleBlock控件的高度和边距.这是我的可视状态管理器,它显示和隐藏我的ListView:

<VisualState x:Name="FullScreenPortrait">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SampleListView" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SampleGridView" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

<VisualState x:Name="Snapped">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SampleListView" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SampleGridView" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

有没有办法从页面的VisualStateManager访问项目模板,或者我应该从不同的角度攻击这个?

解决方法

您无法更改DataTemplate的属性,但可以将ListView的实际ItemTemplate更改为用于捕捉视图的特定模板

<VisualState x:Name="Snapped">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="itemListView" Storyboard.TargetProperty="ItemTemplate">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedListViewItemTemplate}"/>
        </ObjectAnimationUsingKeyFrames>                        
    </Storyboard>
</VisualState>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读