MultiDataTriggers и VisualState - PullRequest
       41

MultiDataTriggers и VisualState

0 голосов
/ 21 октября 2010

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

<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, но я не могу определить, почему (ширина анимируется через изменение визуального состояния)?

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 21 октября 2010

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

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

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

...