项目模板中的列表视图视觉状态管理器(WinRT、Metro、XAML)

2023-12-25

我正在尝试获取一个列表视图来显示由文本块组成的项目列表...... 当单击列表视图项目时,我想显示一个由文本框组成的列表......

以下是我想出来的,它不起作用。 我在模板中有两个网格,希望根据是否选择列表视图项来简单地显示和隐藏网格。我哪里出错了?

我从列表视图的模板本身中删除了这些视觉状态,但我必须承认我不确定它们是如何工作的,或者它们是如何被触发的。是否应该有一些代码来执行此操作?

    <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。

这就是您想要做的。

创建一个用户控件来表示您想要的布局ListView物品。当你定义你的ListView,请务必包括您的UserControl在你的DataTemplate, 像这样:

<ListView>
        <ListView.ItemTemplate>
            <DataTemplate>
                <local:MyUserControl />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView.ItemsPanel>
</ListView>

现在,对于VisualStates。您需要在里面设置状态UserControl。这意味着编辑状态和查看状态。一个国家需要像这样本地化。想想Button控制。按钮中的状态在每个中定义Button不是某个共享位置。

当您准备更改其中一项的状态时,需要将其连接到后面的代码。在后面的代码中,您需要循环遍历您的项目中的项目ListView并调用您创建的方法,例如MakeStateEdit() and MakeStateView()。这些方法的实现将设置用户控件的状态。外部代码只是相信它会发生。

这意味着您需要致电VisualStateManager.GoToState(this, "Edit", true);(或您创建的任何状态)在您的内部UserControl,在代码隐藏中。相反,您可以在以下情况下设置“查看”状态:MakeStateView()叫做。

迭代一个ListView Items属性,你需要使用这样的技术(http://blog.jerrynixon.com/2012/09/how-to-access-named-control-inside-xaml.html http://blog.jerrynixon.com/2012/09/how-to-access-named-control-inside-xaml.html)。你会发现,一旦你开始走这条路,它实际上并不是很复杂。您可能会对无法在 XAML 中完成所有这些操作感到失望。你不能。但这是可以完成的!

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

项目模板中的列表视图视觉状态管理器(WinRT、Metro、XAML) 的相关文章

随机推荐

  • 如何在firefoxQuantum(浏览器版本57)中安装sqlite管理器插件

    我尝试在 Firefox 中安装 sqlite 管理器插件 但它显示错误 您的 Firefox Quantum 浏览器不兼容 我的 Firefox 浏览器版本是 57 0 4 此扩展取决于嵌入的 sqlite 引擎的接口 在火狐浏览器中 由
  • 使用 webdriver 的 Chrome 和 IE 驱动程序配置文件

    我的项目需要某些 cookie 才能访问该应用程序 对于 Firefox 驱动程序 我使用 firefox 配置文件 我用于手动测试的 ff 配置文件 因为它具有我想要的所有 cookie 来运行脚本 如何在 Chrome 和 IE 浏览器
  • Illustrator/SVG 到 JavaScript 的工作流程? (模板库?)

    在 Illustrator 中 另存为 SVG 时 这是典型的结果
  • 无法使用 YAML Spring Profile 禁用 @Cacheable

    我创建了一个名为 mycache 的缓存 该缓存应用于我的服务中的方法 例如 Cacheable value mycache public String getValue String something breakpoint here 我
  • WKT中如何处理Circle?

    我有一个 json 对象 区域 圆形 28 625360369528934 77 2227479486792 3135 6 如何使用WKTreader解析它 你需要回到写下它的人那里并解释一下CIRCLE不属于WKT标准 http www
  • 存储设置的最佳实践

    我有一个相当大的 C 应用程序 在 Windows 上 没有计划其他平台 它当前将所有设置 甚至某种地址 存储在 Windows 注册表中 有时这很不方便 因为用户很难更改注册表中的条目 我希望对设置进行版本控制 以便设置始终与当前代码匹配
  • SPARQL 对聚合值应用 MAX [重复]

    这个问题在这里已经有答案了 我有这样的疑问 prefix
  • R闪亮-带有选项的弹出窗口

    我正在创建一个查询 SQL 数据库的闪亮应用程序 如果查询的数据有两个日期的条目 我想警告用户 此外 我希望用户能够选择要查询的数据集 这是一个例子 Server Create example data set seed 10 Measur
  • (如何)终端服务/远程桌面可以用来共享Access数据库吗?

    我以前使用过的唯一类型的 远程桌面 应用程序是 VNC 查看器 我对这种应用的理解是 当多个用户登录同一个VNC服务器时 他们共享键盘 鼠标和桌面 因此只有一个人可以实际使用计算机 而其他用户可以观看正在发生的事情 这显然有它自己的用途 我
  • Metastore_db 不是在 Windows 7 中使用 apache Spark 2.2.1 创建的

    我想使用最新的读取 CSV 文件Apache Spark Version i e 2 2 1 in Windows 7 via cmd但无法这样做 因为存在一些问题metastore db 我尝试了以下步骤 1 spark shell pa
  • 在逗号分隔列表上进行 Sub 和 Join

    我正在尝试构建一个 ECS Fargate 任务定义 该定义使用传递给命令的可变数量的环境变量 每个变量名称都与 SecretsManager 中的一个秘密相匹配 我无法以有意义的方式组合这些功能 以下代码只是将所有变量作为字符串列表传递给
  • 如何使 div *不*扩展以填充其父级?

    我有一个 div 包裹着图像 如下所示 div class containing div div class image wrapper img src image jpg div div class unrelated stuff Bla
  • Plotly:如何为所有子图设置xticks?

    我无法操纵所有子图上的 xticks 我正在使用的 xticks 方法 根据文档 仅更改最顶层子图的 xticks 如何更改下部子图的 xticks 下面是我的代码 fig make subplots rows 2 cols 1 fig a
  • PostgreSQL:如何索引所有外键?

    我正在使用一个大型 PostgreSQL 数据库 并且正在尝试调整它以获得更高的性能 我们的查询和更新似乎使用外键进行了大量查找 我想要的是一种相对简单的方法来向所有外键添加索引 而不必遍历每个表 140 并手动执行 在研究这个问题时 我发
  • 处理来自 ADFS 的 JWT 不记名令牌

    我正在测试一个 Web 应用程序 API 该 API 使用 X509 证书对 ADFS 服务器进行身份验证 为了使用空手道运行测试 我目前使用一个小型 NET 应用程序 该应用程序使用我安装的证书协商 JWT 进行 SSO 然后 我从 Fi
  • Javascript 相当于 iOS 的“tap”事件,但适用于 Android

    我正在使用 jqtouch 制作一个触摸优化网站 对于 iOS 我将 tap 绑定到点击侦听器 但这不会在 Android 中注册 我尝试使用 touchend 它可以工作 但它会覆盖任何类型的拖动 当用户试图做的只是滚动时单击项目 对于
  • C# 中的锁定关键字

    我从MSDN上了解到lock关键字的主要作用 lock 语句 C 参考 lock 关键字标记一条语句 块作为关键部分 获取互斥锁 对于给定的对象 执行 声明 然后发布 锁 什么时候应该使用锁 例如 它对于多线程应用程序很有意义 因为它可以保
  • 如何在 C# 中使网页浏览器控件变为空白?

    最初 当网络浏览器刚刚加载到表单上时 它是空白的 即白色 一旦我们进入某个特定网站 有没有办法让它再次变成空白 我尝试过这些方法 但没有找到一种可以实现这一点的方法 还有其他方法还是我错过了什么 尝试一下 webBrowser1 Navig
  • 使用“”的不可重现的随机数

    我正在尝试创建一个类 为多个分布生成随机数 同时保持它们的可重复性 通过设置初始种子 该代码似乎有效 直到我开始使用正态分布和奇怪的错误表面 这些主要是 如果我取消注释double a rnd rnorm 0 0 1 0 line 第40行
  • 项目模板中的列表视图视觉状态管理器(WinRT、Metro、XAML)

    我正在尝试获取一个列表视图来显示由文本块组成的项目列表 当单击列表视图项目时 我想显示一个由文本框组成的列表 以下是我想出来的 它不起作用 我在模板中有两个网格 希望根据是否选择列表视图项来简单地显示和隐藏网格 我哪里出错了 我从列表视图的