gpt4 book ai didi

c# - WPF:如何处理模型中的事件以动态更新 MVVM 中的 xaml

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:57 24 4
gpt4 key购买 nike

我在尝试解决这个问题时遇到了一些死胡同...使用 WPF 中的 MVVM 模式,我们的 C# 模型会触发一个事件来说明发生了什么。我希望能够在我的 ViewModel 中处理该事件,然后启动 Storyboard或更改当前 Xaml 页面上隐藏面板的可见性。这必须在没有代码隐藏的情况下处理。

我可以在我的 ViewModel 中同步事件,更新属性以说明该事件的名称,甚至触发 NotifyPropertyChanged 但我如何才能启动 Storyboard或映射到 bool 值 true/false在我的网格的可见性属性上?我绑定(bind)到 hs 的属性是事件名称,因为可能会根据不同的事件显示不同的网格,所以我需要一种将其映射到 bool 值的方法。然而,理想的解决方案是启动 Storyboard。我看过 DataTriggers,但它们似乎都链接到样式而不是实际页面。

关于如何实现此目标的任何想法?

谢谢!

最佳答案

我过去曾用它在代码隐藏中启动 Storyboard

Storyboard animation = (Storyboard)this.FindResource("ShowPanelStoryboard");
animation.Begin();

此代码在 View 后面,而不是在 ViewModel 中。就个人而言,我不介意我的 View 背后的一些代码,前提是它只与 View 相关。在我使用它的项目中,我向 VisibilityChanged 事件添加了一个监听器,当它变为 Visible 时,我运行了 Storyboard。

至于显示弹出窗口,有几种方法。我最喜欢的方法之一是向 ViewModel 添加一个 IsPopupShown 属性,将我的面板的可见性绑定(bind)到它,并在弹出窗口应该显示的任何时候将其设置为 true。然后,ViewModel 会处理触发弹出窗口是否显示的事件。

Dave White 建议的替代方案是使用转换器。如果您的值并不总是 true/false,那么您可以创建一个转换器来检查绑定(bind)值是否等于 ConverterParameter,并返回一个 Visibility 值。

关于c# - WPF:如何处理模型中的事件以动态更新 MVVM 中的 xaml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4217799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com