0

我在一个窗口上有一个基本的 TreeView,该窗口具有从 dll 中的资源应用的样式。样式 dll 能够在两种样式之间切换。当我在 dll 中没有 TreeView 的样式时,我可以展开 TreeViewItems,切换(其他控件的)样式,并且 TreeViewItems 保持展开状态。但是,只要我为 TreeView 添加样式,一旦切换样式,已展开的 TreeViewItems 就会崩溃。

所有花哨的动画和 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>

任何建议将不胜感激。我已经没有想法了!

4

1 回答 1

0

当您拿走模板或替换为另一个模板时,某些依赖项属性将重置为其默认值。原因是依赖属性优先级。在这里看看这个:http: //msdn.microsoft.com/library/ms743230

可以这样想:一个依赖属性可能包含许多分层的值。最顶层的值始终是当前值。如果你拿走一种风格,你也会拿走层次。如果你拿走所有层,依赖属性将把默认值作为当前值。

当您替换 TreeView 的样式时,所有下面的样式都将更新/重新初始化/更改/重置...

要解决此问题,请尝试保持相同的模板,只更改颜色、边框和类似的东西.. 或使用绑定

于 2014-11-20T09:41:58.450 回答