XAML VisualState AdaptiveTrigger MinWindowWidth 以编程方式更改

XAML VisualState AdaptiveTrigger MinWindowWidth change programmatically

我有一些 VisualStates,我想在 if 语句后面的代码中更改 AdaptiveTrigger MinWindowWidth

视觉状态:

<VisualState x:Name="VisualState">
     <VisualState.StateTriggers>
         <AdaptiveTrigger MinWindowWidth="1100"/>
     </VisualState.StateTriggers>
     ....
</VisualState>

它背后的代码应该是这样的:

if (Something == true)
{
     VisualState1.SetValue(AdaptiveTrigger.MinWindowWidthProperty, 1370);
}

我不知道为什么,但它不起作用,所以我希望你能帮助我。

应该这样做:

<VisualState>
     <VisualState.StateTriggers>
         <AdaptiveTrigger x:Name="MyTrigger" MinWindowWidth="1100"/>
     </VisualState.StateTriggers>
     ....
</VisualState>

和代码隐藏:

MyTrigger.MinWindowWidth = 1370;

如果您使用 MVVM 或其他一些数据绑定,您还可以使用 {Binding myMinWidth} 作为 MinWindowWidth 属性 值。

引用 VisualState 本身是行不通的。您所指的 属性 属于 AdaptiveTrigger.

<VisualState x:Name="VisualState">
  <VisualState.StateTriggers>
    <!-- For better reference in code behind, include VisualState name -->
    <AdaptiveTrigger x:Name="TriggerOfVisualState"
                     MinWindowWidth="1100"/>
  </VisualState.StateTriggers>
 ....
</VisualState>

请注意:
设置新值的方式就像设置附加的 属性.
如果 属性 实际上是附加的 属性(例如 Grid.Row),您应该只这样设置它们。 否则使用直接 属性 访问器:

TriggerOfVisualState.MinWindowWidth = 1370;