在WPF中使用VisualStateManager时,可能需要在控件初始化时转换为VisualState。据我所知,没有办法在Xaml中声明初始状态,这给了您有限的选择权,可以在初始化后将代码转换为所需的状态。

在后面使用代码并非总是可取的,如果您使用绑定来控制VisualState,那么也不总是可能的。

所以问题是:如何在WPF中设置初始VisualState,而不在后面的代码中设置它?

最佳答案

评论太久了

绑定“应该”没有区别。如果它在后台代码中运行良好,则除非在绑定中确实有些奇怪,否则它一定可以从xaml中运行。

Blend的所有动作都可以视为xaml帮助工具。最终结果是您得到了一些xlml,它可以为您创建混合。如果您不想使用blend。只需在VS中自己添加xaml。

为此,可以对GoToStateAction进行编码,例如

<Window ...
        xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
        ...>
...
<Button x:Name="button"
        Style="{DynamicResource ButtonStyle1}">
  <i:Interaction.Triggers>
    <i:EventTrigger>
      <ei:GoToStateAction StateName="YourState"
                          TargetObject="{Binding ElementName=button}" />
    </i:EventTrigger>
  </i:Interaction.Triggers>
</Button>


您还将在项目中需要相应的引用。

在旁注中尝试混合。它在特定位置具有优势。您可能不会直接替换键入xaml,但它是一个很好的帮助工具。除非强制执行,否则完全忽略它是毫无意义的IMO。

关于wpf - 在WPF中设置初始VisualState,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16955900/

10-09 19:49