2015-11-12 52 views
0

我有一些VisualStates,並且我想在if語句中更改後面代碼中的AdaptiveTriggerMinWindowWidthXAML VisualState AdaptiveTrigger MinWindowWidth以編程方式更改

的VisualState:

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

,並在後面的代碼應該是這樣的:

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

我不知道爲什麼,但它不工作,所以我希望你能幫助我。

+0

_「它不工作」 _ - 你希望發生? – Herdo

+0

它應該更改VisualState觸發器,但它不會,即使if statemante爲true,它也會使用XAML中定義的AdaptiveTrigger。 – blueeyes

+1

你必須命名'AdaptiveTrigger'本身,而不是'VisualState'。這應該能夠完成這項工作。 – Herdo

回答

1

參考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; 
0

這應做到:

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

和代碼隱藏:

MyTrigger.MinWindowWidth = 1370; 

如果你使用MVVM或其他一些數據綁定,您還可以使用{Binding myMinWidth}MinWindowWidth屬性值。