Wpf StateHelper(带MVVM的VisualStateManager)
基于的问题,或者您可以在上看到StateHelper本身(已更新) 它起作用了!但我不明白当helper方法设置state获取DependencyObject(视图控件)作为输入参数时,helper从视图解析依赖关系视图模型的方式。无论如何,视图模型必须有一个到控件的链接(这很糟糕)并将其传递给助手 我试着问另一种方法(只是为了以防万一,如果你很难理解我的英语)。如何从视图模型动态更改控件的可视状态。很明显,如果你能给我一个尽可能简单的例子 我也没有办法作为触发器。我必须根据更改视图模型属性更改视觉状态。WinRT中的触发器不像我以前看到的那样工作 更新 也许我的想法是错误的,这段代码将状态绑定到隐藏在StateHelper中的属性名。但我仍然无法做到这一点,我无法理解对于一个包含100个项目的面板(用户控件),视图模型(此面板的)必须更改每个项目的状态 回答Wpf StateHelper(带MVVM的VisualStateManager),wpf,mvvm,visualstatemanager,Wpf,Mvvm,Visualstatemanager,基于的问题,或者您可以在上看到StateHelper本身(已更新) 它起作用了!但我不明白当helper方法设置state获取DependencyObject(视图控件)作为输入参数时,helper从视图解析依赖关系视图模型的方式。无论如何,视图模型必须有一个到控件的链接(这很糟糕)并将其传递给助手 我试着问另一种方法(只是为了以防万一,如果你很难理解我的英语)。如何从视图模型动态更改控件的可视状态。很明显,如果你能给我一个尽可能简单的例子 我也没有办法作为触发器。我必须根据更改视图模型属性更改
这是一个愚蠢的问题,我会为所有需要睡眠的人回答,然后再问类似的问题 在使用StateHelper的这段代码中隐藏了一个divil
<controls:SomeControl x:Name="ball" MyApp:StateHelper.State="{Binding State, Mode=TwoWay}"/>
<controls:SomeControl x:Name="ball" MyApp:StateHelper.State="{Binding State, Mode=TwoWay}"/>
“State”是视图模型中的一个属性,它只是一个带有状态名称的字符串。您只需更改它,并借助“双向”绑定调用stateheloper.SetState以获得正确的控制(在我的例子中,我使用了一个包装器,用于contorl-“ControlName”和STATES,并且我可以在面板视图模型中为choosen控制设置控制状态的属性)这是一个愚蠢的问题,在问类似问题之前,我会回答所有需要睡眠的人 在使用StateHelper的这段代码中隐藏了一个divil
<controls:SomeControl x:Name="ball" MyApp:StateHelper.State="{Binding State, Mode=TwoWay}"/>
<controls:SomeControl x:Name="ball" MyApp:StateHelper.State="{Binding State, Mode=TwoWay}"/>
“State”是视图模型中的一个属性,它只是一个带有状态名称的字符串。您只需更改它,并借助“双向”绑定调用stateheloper.SetState以获得正确的控制(在我的例子中,我使用了一个包装器,用于contorl-“ControlName”和STATES,并且我可以在面板视图模型中为choosen控制设置控制状态的属性)
此外,我在视图模型中使用枚举类型,在视图中使用转换器。由于这一点,我不再在视图模型中使用字符串,视图片段看起来像
<local:Ball DataContext="{Binding}" common:StateHelper.State="{Binding State, Mode=TwoWay, Converter={StaticResource EnumToBallStatesConverter}}"/>
没有愚蠢的问题。把你的答案作为答案贴出来并接受它。