0
我正試圖在Button中切換ControlTemplate
。在代碼中更改模板後,樣式中的觸發模板無法正常工作
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=TestProperty}" Value="true">
<Setter Property="Template" Value="{StaticResource MyCustomTemplate}"/>
</DataTrigger>
</Style.Triggers>
</Style>
它工作正常,直到我更改代碼中的按鈕模板。例如,
myButton.Template = someTemplate;
即使這是足夠多的重現了一個錯誤:
myButton.Template = myButton.Template;
順便說下面的代碼將正確地更改myButton
foregound到Aqua
。這意味着觸發器工作正常。它只是不能設置模板
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=TestProperty}" Value="true">
<Setter Property="Template" Value="{StaticResource MyCustomTemplate}"/>
<Setter Property="Foreground" Value="Aqua"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
爲什麼會發生這種情況?
你還設置了按鈕本身的模板? – Nitin
按鈕有其默認模板。而不設置'myButton.Template = myButton.Template'觸發器工作正常。 –
如果您直接設置myButton.Template(作爲本地值),則樣式值不能覆蓋此值。請參見[依賴屬性值優先級](http://msdn.microsoft.com/en-us/library/ms743230.aspx#listing)。 – LPL