我在一个窗口上有一个基本的TreeView,它有一个从dll中的资源应用的样式。样式dll能够在两种样式之间切换。当我在dll中没有TreeView的样式时,我能够扩展TreeViewItems,切换样式(其他控件的样式),并且TreeViewItems仍然展开。但是,只要我为TreeView添加样式,一旦切换样式,已展开的TreeViewItem就会崩溃。
为了追踪问题,已删除所有精美动画和TreeViewItem样式。剩下的风格很简单:
<Style x:Key="{x:Type TreeView}" TargetType="{x:Type TreeView}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeView">
<Border Name="Border"
Background="Transparent"
BorderThickness="1"
CornerRadius="1">
<ItemsPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
任何建议都将不胜感激。我已经没想完了!
答案 0 :(得分:0)
当您拿走模板或替换另一个模板时,某些依赖项属性将重置为其默认值。原因是依赖属性优先级。请看这里:http://msdn.microsoft.com/library/ms743230
可以这样想:依赖属性可能包含许多分层的值。最顶层的值始终是当前值。如果你采取一种风格,你也会走开层。如果取走所有图层,则依赖项属性将默认值作为当前值。
当您更换TreeView的样式时,所有底层样式都将更新/重新启动/更改/重置...
要解决这个问题,请尝试保留相同的模板,只更改颜色,边框和类似的东西..或使用Binding