在WPF中设置初始VisualState

Ric*_*d E 5 wpf visualstatemanager

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

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

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

Viv*_*Viv 3

评论太长了

绑定“应该”没有什么区别。如果它在代码隐藏中工作正常,那么它一定可以在 xaml 中工作,除非绑定中有一些非常奇怪的东西。

Blend 的所有操作都可以被视为 Xaml 辅助工具。最终结果是你得到一些 Blend 为你创建的 xaml。如果您不想使用混合。只需要在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>
Run Code Online (Sandbox Code Playgroud)

您的项目中还需要相应的参考资料。

顺便说一句,请尝试混合。它在特定的地方有它的优势。您可能不会直接替换输入 xaml,但它是一个很好的辅助工具。在我看来,除非被迫,否则完全忽略它是毫无意义的。