构建具有自定义“高对比度”主题的应用程序,用于户外使用,可在运行期间打开和关闭。这是通过合并和取消合并包含类似下面的样式资源字典罚款...基于风格的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