XAML VisualState AdaptiveTrigger MinWindowWidth以编程方式更改

本文关键字:编程 方式更 MinWindowWidth VisualState AdaptiveTrigger XAML | 更新日期: 2023-09-27 18:21:48

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

视觉状态:

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

在代码后面应该是这样的:

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

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

XAML VisualState AdaptiveTrigger 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;

这应该做到:

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

和代码背后:

MyTrigger.MinWindowWidth = 1370;

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