我的应用程序(MVVM Light)调整它的主窗口(隐藏并用动画显示它)。对于动画我使用StaticResources带参数的DataTrigger:如何将StaticResources传递给MVVM中的ViewModel?
<Window.Resources>
<system:Double x:Key="WindowMaxWidth">400</system:Double>
<system:Double x:Key="WindowMinWidth">25</system:Double>
</Window.Resources>
<Window.Style>
<Style TargetType="Window">
<Style.Triggers>
<DataTrigger Binding="{Binding DropBox.IsShown}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Width"
To="{StaticResource WindowMaxWidth}"
Duration="0:0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Width"
To="{StaticResource WindowMinWidth}"
Duration="0:0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Style>
在我的ViewModel我需要我的窗口的宽度值,所以我约束它。问题是它默认为0,所以我必须用一个值来初始化它。其实什么需要是我的静态资源的价值:WindowMaxWidth。
- 我不能WindowMaxWidth的价值转移到视图模型,因为DataTriggr不接受绑定(它抱怨线程)
- 我不想在StaticResources和视图模型分别保持相同的值,以避免不连贯。
我该怎么办?