基于StackOverflow 的问题(已回答)或者您可以在GitHub 上查看 StateHelper 本身(已更新)
有用!但是我不明白当助手方法 SetState 获取 DependencyObject(视图控制)作为输入参数时,助手从视图中解析依赖视图模型的方式。这意味着无论如何视图模型都必须有一个控制链接(这很糟糕)并将其传递给助手。
我试着问另一种方式(如果你很难理解我的英语,以防万一)。如何从视图模型动态更改控制的视觉状态。很明显,如果你能给我一个尽可能简单的例子。
我也没有办法作为触发器。我必须根据更改视图模型属性来更改视觉状态。WinRT 中的触发器不像我以前看到的那样工作。
更新
也许我想错了,这段代码将状态绑定到隐藏在 StateHelper 中的属性名称。但是我仍然做不到,我无法理解对于具有 100 个项目的面板(用户控件)来说,其中视图模型(该面板的)必须更改每个项目的状态。
已回答
这是一个愚蠢的问题,在问这样的问题之前,我会为所有需要睡眠的人回答。
在这个使用 StateHelper 的片段中隐藏了一个恶魔
<controls:SomeControl x:Name="ball" MyApp:StateHelper.State="{Binding State, Mode=TwoWay}"/>
“状态”是您的视图模型中的一个属性,它只是一个带有状态名称的字符串。您所需要的只是更改它,并借助“双向”绑定调用 StateHelper.SetState 进行正确的控制(在我的情况下,我使用了 contorl 的包装器 - “ControlName”WithStates,我可以在面板视图中设置控制状态的属性选择控制模型)