以编程方式在代码隐藏中添加视觉状态设置器

2024-01-11

我正在将 8.1 Universal 转换为 UWP。我在代码隐藏中有一些代码,可以根据视图模型数据以编程方式在堆栈面板中创建潜在的数百个节点。我正在尝试向其中一些节点添加一些视觉响应规则。

我使用的模式基本上是:

foreach (var item in ViewModel.items)
{
    var fooStackPanel = CreateItemRowStackPanel();

    fooStackPanel.Children.Add(CreateItemImage(item.ProductUrl));
    fooStackPanel.Children.Add(CreateItemNameTextBlock(item.Name));
    // ...

    LayoutGrid.Children.Add(fooStackPanel);
}

我想在其中的某个地方向特定节点添加响应规则。

这是我想要在 XAML 中执行的操作,但我需要在后面的代码中执行这些设置器。我该怎么做?

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="WindowStates">
        <VisualState x:Name="NarrowState">
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="0" />
            </VisualState.StateTriggers>

            <VisualState.Setters>
                <!-- How do I add these programmatically in the code behind? -->
                <Setter Target="Item1Image.Visibility" 
                        Value="Collapsed" />
                <Setter Target="Item2Image.Visibility" 
                        Value="Collapsed" />
                <!-- ... -->
            </VisualState.Setters>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

正如巴特所说,绑定可见性要容易得多,但如果由于某种原因这对您不起作用,您可以添加VisualState Setters从代码隐藏这样:

1)创建新的视觉状态组

var vsg = new VisualStateGroup();

2)创建你的状态

var vs = new VisualState()

你不能说出它的名字,但也没有必要这样做。如果你确实必须这样做(例如,你想手动使用GoToState, 你可以做var vs = (VisualState) XamlReader.Load($"<VisualState x:Name=\"{*yournameinline*}\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" />");.

3)添加您的状态触发器:

vs.StateTriggers.Add(new AdaptiveTrigger { MinWindowWidth = 0.0 });

4)添加您的设置器:

vs.Setters.Add(new Setter
    {
    Target = new TargetPropertyPath
        {
            Path = new PropertyPath("(Image.Visibility)"),
            Target = *yourimage*
        },
    Value = Visibility.Collapsed
});

5) 获取控件的视觉状态组并添加所有内容:

vsg.States.Add(vs);

VisualStateManager.GetVisualStateGroups(*yourcontrol*).Add(vsg)

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

以编程方式在代码隐藏中添加视觉状态设置器 的相关文章

  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 私有模板函数

    我有一堂课 C h class C private template
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • RESTful API 错误的最佳实践

    在 RESTful API 中返回 HTTP 状态代码的最佳实践是什么 我的 PHP 框架使用 Laravel 4 如果出现错误 我应该使用 return Response json User Exists 401 or 包括标志succe
  • 通过 mc.cores 与 makePSOCKcluster 设置核心?

    我想知道通过设置 R 使用的核心数有什么区别makePSOCKcluster并明确地在 foreach 循环中 我应该在这两种情况下单独设置它 还是在制作时这样做makePSOCKcluster enough cl lt makePSOCK
  • 了解 _.js 中下划线的声明吗?

    这是从一开始带注释的 js 来源 http documentcloud github io underscore docs underscore html 尽管我可以尝试 但我的 JavaScript 能力还不够高 无法理解这里发生的事情
  • Google Pubsub:不可用:该服务无法满足您的请求

    我正在使用 java 库从我的代码中订阅订阅 使用sbt com google cloud google cloud pubsub 0 24 0 beta 我按照本指南编写订阅者 https cloud google com pubsub
  • 是否可以集成 django-taggit 和 django-mptt / django-treebeard?

    我正在开发一个需要标记不同类型内容的网站 这有利于使用 django taggit 但是 如果标签以其自然层次结构在数据库中表示 这将非常有益 有利于使用 django mptt 或 django treebeard 将 taggit 的通
  • 将 UIToolbar 添加到某些文本字段的输入附件视图

    在我寻找我的第一个 iPhone 应用程序时 我发布了有关处理 iOS 键盘上的返回键的正确方法 现在我需要找出键盘上方的工具栏 其中包含上一个 下一个和完成按钮 我一直在使用以下网站的示例 输入配件视图 http gabriel tips
  • Flutter 从 Firebase 存储加载图像

    我看到有很多关于如何使用 flutter 将图像上传到 firebase 存储的示例 但没有实际下载 读取 显示已上传的图像 在Android中 我只是使用Glide要显示图像 我该如何在 Flutter 中执行此操作 我是否使用Netwo
  • 使用 Pandas 将 csv 转换为 Json

    我想使用 pandas 将 CSV 转换为 JSON 格式 我是一名测试人员 想要将一些事件发送到事件中心 因为我想要维护 CSV 文件并使用 CSV 文件更新我的记录 数据 我通过使用 pandas 读取 JSON 创建了一个 CSV 文
  • 将 Dropzone 中的文件添加到表单

    我想使用 Dropzone js 以便用户可以选择他想要上传的图像 但我不希望它们即时上传 而只是添加到表单中 然后以表单数组中的正常方式提交 我怎样才能做到这一点 我见过这样的问题如何让 Dropzone js 仅在单击提交按钮时上传文件
  • 在 SQLite 数据库中保存 ArrayList

    所以我想保存一组有序的双精度值 并且我希望能够轻松地插入 检索或删除其中的任何值 因此 我使用 ArrayList 在其中定义一个名为 Doubles 的类来存储双精度值 如何将此数组列表存储在 SQLite 数据库的记录中 我的意思是 列
  • 如何确定 Windows Java 安装位置

    我正在尝试从 C 程序集动态运行 jar 使用Process Start info 现在 我可以从控制台应用程序运行 ProcessStartInfo info new ProcessStartInfo java jar somerando
  • Debian Jessie 中的 Apache - 仍然收到消息您没有权限访问此服务器上的 /

    相同的虚拟配置我 apache wheezy 工作正常 例如 服务器名称 lgbs 服务器别名 www lgbs DocumentRoot home vdomain app web SetEnv APPLICATION ENV develo
  • Requests.get 显示的 HTML 与 Chrome 开发者工具不同

    我正在使用Python 特别是jupyter笔记本 开发一个网络抓取工具 它可以抓取一些房地产页面并保存价格 地址等数据 它对于我挑选的其中一个页面工作得很好 但是当我尝试抓取此页面时 sreality cz https www sreal
  • 按数字和字母顺序对带有字母的数字进行排序

    我的网站上有一个数据库 其中有一长串 产品 全部包含字母 例如 TC 345 TC 234 或 HC 236W 123 234 PWD 我们可以按数字和字母顺序对网站上的 进行排序吗 目前我们按字母顺序存储 因此顺序为 10 PDW 100
  • 正则表达式删除句子中包含数字的所有单词

    我尽力删除了句子中所有带有数字的单词 但仍然不成功 我什至尝试了以下正则表达式 regex s w 1 2 W s a zA Z0 9 d x preg replace regex x 我正在努力完成以下任务 包含数字和任何特殊字符 例如
  • Android、Windows Phone 7 和 Blackberry 的等效配置文件 (iOS)

    在 iOS 中 可以使用配置文件通过无线方式推送电子邮件 wifi 和 VPN 等的配置 有适用于 Android Windows Phone 7 和 Blackberry 的同等产品吗 链接到 iOS 的配置文件http develope
  • PhoneGap 与 jQuery Mobile 性能问题的常见来源有哪些?

    我有一个使用 PhoneGap 1 0 和 jQuery Mobile 1 0b2 编写的应用程序 在 iPhone 和 iPad 上运行 自从我开始使用该框架以来 我一直受到应用程序中 页面 之间切换的性能问题的困扰 按下按钮后 在转换发
  • 如何处理一个类中的多个线程?

    线程通常以两种方式设计 请参阅java教程 http java sun com docs books tutorial essential concurrency runthread html 通过扩展 Thread 类或通过实现 Runn
  • 如何检测滚动条在浏览器的哪一侧 - 向右还是向左(在 RTL 的情况下)?

    For 某些浏览器 Safari Edge IE 会自动将滚动条移动到左侧 这是正确的行为 不幸的是 主要浏览器 Chrome 和 Firefox 的行为方式有所不同 滚动条仍然位于浏览器的右侧 是否可以以编程方式 最好使用 vanilla
  • 以编程方式在代码隐藏中添加视觉状态设置器

    我正在将 8 1 Universal 转换为 UWP 我在代码隐藏中有一些代码 可以根据视图模型数据以编程方式在堆栈面板中创建潜在的数百个节点 我正在尝试向其中一些节点添加一些视觉响应规则 我使用的模式基本上是 foreach var it