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時不知道。所以這似乎是唯一的(足夠乾淨的)選項,至少現在是這樣。 –