项目模板中的listview可视状态管理器(WinRT,Metro,XAML)
我正在尝试获取列表视图以显示由文本块组成的项目列表…
单击列表视图项时,我想显示由文本框组成的列表… 以下是我提出的,它不起作用. 我从listview的模板本身中删除了这些视觉状态,但我必须承认我不确定它们是如何工作的,或者它们是如何被触发的.应该有一些代码来做这件事吗? <ListView Grid.Row="2" ItemsSource="{Binding Lines}" HorizontalAlignment="Stretch"> <ListView.ItemTemplate> <DataTemplate> <Grid> <Grid Name="Readonly"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="3*"/> </Grid.ColumnDefinitions> <TextBlock Text="{Binding One}" Grid.Column="0"/> <TextBlock Text="{Binding Two}" Grid.Column="1"/> </Grid> <Grid Name="Editing" Visibility="Collapsed"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="3*"/> </Grid.ColumnDefinitions> <TextBox Text="{Binding One}" Grid.Column="0"/> <TextBox Text="{Binding Two}" Grid.Column="1"/> </Grid> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="SelectionStates"> <VisualState x:Name="Selected"> <Storyboard> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Editing" Storyboard.TargetProperty="Visibility"> <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Readonly" Storyboard.TargetProperty="Visibility"> <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView> 非常感谢, 解决方法
您正在将Storyboard动画设置在正在呈现的项目之外.您指定的目标不仅超出了外部页面的范围,而且它们可能尚不存在.因此,在呈现页面时无法设置Storyboard.
这是你想要做的. 创建一个用户控件,表示ListView项中所需的布局.定义ListView时,请确保将UserControl包含在DataTemplate中,如下所示: <ListView> <ListView.ItemTemplate> <DataTemplate> <local:MyUserControl /> </DataTemplate> </ListView.ItemTemplate> </ListView.ItemsPanel> </ListView> 现在,对于VisualStates.您需要在UserControl中设置状态.这意味着Edit的状态和View的状态.一个州需要像这样进行本地化.想想Button控件.按钮中的状态在每个按钮中定义,而不是在某个共享位置. 当您准备好更改其中一个项目的状态时,您需要将其连接到您的代码后面.在你的代码中,你需要遍历ListView中的项目并调用你创建的方法,比如MakeStateEdit()和MakeStateView().这将是您设置用户控件状态的那些方法的实现.外部代码只是相信它会发生. 这意味着你需要调用VisualStateManager.GoToState(this,“Edit”,true); (或者你创建的任何状态)在UserControl中,在代码隐藏中.相反,您可以在调用MakeStateView()时设置“View”状态. 要迭代ListView Items属性,您需要使用这样的技术(http://blog.jerrynixon.com/2012/09/how-to-access-named-control-inside-xaml.html).你会发现,一旦你开始走这条路,它真的不是很复杂.您可能会对在XAML中无法完成所有这些操作感到失望.你不能.但这是可以完成的! 祝你好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows server 2008R2升级到Windows server 2016
- windows-server-2008 – 在Windows Server 2008 R2上查看计
- 如何关闭Win10/Win8.1/Win7管理共享
- 如何在Windows 2008 Server上创建运行.bat文件的服务?
- windows-7 – 比Sikuli更好的工具用于Windows 7(或最好是多
- powershell – Nuget.exe安装 – Microsoft.CSharp已经具有
- windows-phone-7 – Windows Phone 7中的推送通知问题
- 是否有类似于Windows WINAPI的Core Linux API,特别是用于创
- active-directory – 在Windows 2012 R2上禁用密码复杂性
- Windows和Linux上 安装MySQL