2014-11-20 2 views
0

У меня есть базовый TreeView в окне, которое имеет стиль, применяемый к ресурсу в dll. DLL стиля способна переключаться между двумя стилями. Когда у меня нет стиля TreeView в dll, я могу расширить TreeViewItems, сменить стили (других элементов управления), а TreeViewItems останется расширенным. Однако, как только я добавлю стиль для TreeView, TreeViewItems, которые были расширены, рушится сразу же после переключения стиля.Шаблон шаблона стиля WPF TreeView IsExpanded на переключателе стиля

Все причудливые анимации и стилизация 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

Когда вы забираете шаблон или заменяете другим, некоторые свойства зависимостей будут сброшены до значения по умолчанию. Причиной этого является приоритет свойства зависимостей. Взгляните на это здесь: http://msdn.microsoft.com/library/ms743230

Думайте об этом так: свойство зависимости может содержать много значений, которые являются многоуровневыми. Значение в верхнем большинстве слоев всегда является текущим значением. Если вы уберете стиль, вы тоже уберете слои. Если вы удалите все слои, свойство зависимости примет значение по умолчанию в качестве текущего значения.

При замене стиль вашего TreeView, все находящиеся под стили будут обновлены/reinitalized/изменена/... сбрасывается

Чтобы исправить это попытаться сохранить тот же шаблон и изменить только цвета, границы и тому подобное. или использовать Переплет

+0

Благодарим за отзыв. У меня есть только один шаблон для TreeView (как показано в моем вопросе), который не содержит триггеров и минимального стиля. Я ранее разработал расширитель таким же образом, который также имеет свойство IsExpanded и не имел этой проблемы. Это ограничение самого TreeView? –

+0

Просто постарайтесь не сбросить ItemsPresenter, потому что эта плохая задница несет ответственность за представление предметов, и если вы ее убьете, вы потеряете все :) –

+0

Является ли элемент презентатора подразумевающим использование по-другому для кода выше? Я ничего не делаю с этим, кроме того, что он находится в шаблоне стиля. –

Смежные вопросы