構建具有自定義「高對比度」主題的應用程序,用於戶外使用,可在運行期間打開和關閉。這是通過合併和取消合併包含類似下面的樣式資源字典罰款...基於風格的DynamicResourceOn
<Style x:Key="{x:Type MenuItem}" TargetType="{x:Type MenuItem}">
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Template" Value="{StaticResource Theme_MenuItemTemplate}"/>
</Style>
這當一個菜單項的使用不指定樣式的偉大工程。這對於許多情況來說並不現實,因爲沒有方式來綁定沒有樣式的ItemsSource生成的子項。例如:
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding Path=Name}"/>
<Setter Property="IsCheckable" Value="True"/>
<Setter Property="IsChecked" Value="{Binding Path=Checked}"/>
<EventSetter Event="Checked" Handler="HistoryItem_Checked"/>
</Style>
</ContextMenu.ItemContainerStyle>
每隔後在計算器上說,你只需要做到這一點...
<Style TargetType="MenuItem" BasedOn="{StaticResource {x:Type MenuItem}}">
<!-- Your overrides -->
</Style>
但是,這並不對我的情況下工作,因爲我的支持算法FMP能夠而且將會在運行時改變(當然,你不能在BasedOn屬性上使用DynamicResource擴展)。在我的應用程序中執行此操作時,會導致控件在控件加載時覆蓋其樣式,而每個其他控件在沒有重新加載的情況下正確切換時會導致控件被阻塞。
所以我的問題......
有沒有辦法讓DynamicResource擴展支持算法FMP工作或有另一種方法/幫閒我可以實現得到這個工作?
有一種更簡單的方法來「複製」基本樣式。我在一個新的答案中添加了這個。 – aliceraunsbaek 2013-11-15 13:18:34