我的应用程序(MVVM Light)调整了它的主窗口大小(隐藏并用动画显示)。对于动画,我使用带有来自 StaticResources 的参数的 DataTrigger:
<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 的值移动到 ViewModel,因为 DataTriggr 不接受绑定(它抱怨线程)
- 我不想在 StaticResources 和 ViewModel 中分别保留相同的值以避免不一致。
我应该怎么办?