2010-10-21 3 views
0

Я пытаюсь создать систему меню, которая изменяет шаблон контента для панели ПОСЛЕ того, как панель была закрыта изменением визуального состояния, но перед повторной открытием панели (подумайте о слайд-входе/выходе фильтра). Я надеялся, что для достижения этой цели, используя комбинацию триггеров данных, но не имею никакой радости :(Некоторый код был опущен для краткости, но моя установка триггера выглядит следующим образом:MultiDataTriggers и VisualState

<ContentControl x:Name="contentControl" Content="{Binding SelectedThing}" 
           DataContext="{Binding}" Width="200"> 
        <ContentControl.ContentTemplate> 
         <DataTemplate> 
          <ContentControl Name="cc" 
              Content="{Binding}" /> 
          <DataTemplate.Triggers> 

           <MultiDataTrigger> 
            <MultiDataTrigger.Conditions> 
             <Condition Value="People" 
                Binding="{Binding Path=Name}"> 
             </Condition> 

             <Condition Value="0" 
                Binding="{Binding ElementName=contentControl,Path=Width}"> 
             </Condition> 
            </MultiDataTrigger.Conditions> 
            <Setter TargetName="cc" 
              Property="ContentTemplate" 
              Value="{StaticResource PeopleTemplate}" /> 
           </MultiDataTrigger> 

....

триггер изменяет шаблон правильно, когда я опускаю связывание по ширине ContentControl, но я не могу определить, почему (ширина анимированный с помощью изменения визуального состояния)?

Есть идеи?

Благодарности

+0

забыл упомянуть, я вновь открыть панель с помощью дальнейшее изменение в визуальном государстве. – Sidebp

ответ

0

Попробуйте изменить Path = Width to Path = ActualWidth.

Я предполагаю, что триггер не стрелять, потому что ширина свойство фактически не сообщает, что он равен 0.

Вы можете использовать Snoop, чтобы подтвердить это http://snoopwpf.codeplex.com/