1
我有三个不同的VisualState的网格。我如何将这个信息绑定到我的视图模型,因为我需要根据视图状态做不同的事情。绑定VisualStateManager VisualState以查看模型?
现在我使用CurrentStateChanged事件(这不是非常mvvm的方式),但主要问题是事件没有在应用程序打开时被触发,所以我不知道最初的可视状态。
我当前视图:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="AdaptiveVisualStateGroup" CurrentStateChanged="{x:Bind ViewModel.ViewStateChanged, Mode=OneWay}">
<VisualState x:Name="VisualStateNarrow">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
...
</VisualState.Setters>
</VisualState>
<VisualState x:Name="VisualStateNormal">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="720" />
</VisualState.StateTriggers>
<VisualState.Setters>
...
</VisualState.Setters>
</VisualState>
<VisualState x:Name="VisualStateWide">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1000" />
</VisualState.StateTriggers>
<VisualState.Setters>
...
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
视图模型:
public void ViewStateChanged(object sender, VisualStateChangedEventArgs args)
{
if(args.NewState.Name == "VisualStateNarrow")
{
isNarrowState = true;
}
...
}
我试图编写一个行为来完成此操作,但不幸的是,初始状态在行为附加到VisualStateGroup时不知道。所以这似乎是唯一的(足够干净的)选项,至少现在是这样。 –